Что лучший способ состоит в том, чтобы принять меры против пустого указателя в для цикла в Java?
Это кажется ужасным:
if (someList != null) {
for (Object object : someList) {
// do whatever
}
}
Или
if (someList == null) {
return; // Or throw ex
}
for (Object object : someList) {
// do whatever
}
Не могло бы быть никакого другого пути. Если они вставили его for
создайте себя, если это является пустым, тогда не выполняют цикл?
Вам лучше проверить, откуда вы берете этот список.
Пустой список - это все, что вам нужно, потому что пустой список не даст сбоя.
Если вы получаете этот список откуда-то еще и не знаете, нормально это или нет, вы можете создать утилитный метод и использовать его так:
for( Object o : safe( list ) ) {
// do whatever
}
И, конечно, safe
будет:
public static List safe( List other ) {
return other == null ? Collections.EMPTY_LIST : other;
}
var hr = (new Date()).getHours(); //get hours of the day in 24Hr format (0-23)
В зависимости от вашего определения дня/ночи, выполните магию:)
PS: Если ваш день/ночь начинается не в точный час, вы можете попробовать getMinutes ()
.
При создании приложения Rails 3 просто пройдите по параму -J
:
$ rails app_name -J
При этом будут пропущены библиотеки Prototype. Теперь необходимо удалить последний файл jquery.js
в каталог public/javascripts
. После этого также потребуется версия jQuery файла rails.js
. Вы можете получить это здесь:
http://github.com/rails/jquery-ujs/blob/master/src/rails.js
EDIT: Необходимо включить эти файлы в верхнюю часть макетов, чтобы получить функциональность. Вы можете сделать это,
<%= javascript_include_tag "jquery", "rails" %>
Надеюсь, это поможет!
-121--5044427-Вы потенциально могли бы написать вспомогательный метод, который вернул бы пустую последовательность, если бы вы передали значение null:
public static <T> Iterable<T> emptyIfNull(Iterable<T> iterable) {
return iterable == null ? Collections.<T>emptyList() : iterable;
}
Тогда используйте:
for (Object object : emptyIfNull(someList)) {
}
Я не думаю, что на самом деле я бы сделал это, хотя - я бы обычно использовал вашу вторую форму. В частности, важно «или бросить ex» - если оно действительно не должно быть нулевым, обязательно следует бросить исключение. Вы знаете, что что-то пошло не так, но вы не знаете степень ущерба. Прервать рано.
Это очевидное упущение из свойств, что вы не можете написать что-то вроде:
public T2 Item2 { get; readonly set; }
Я даже не уверен, что readonly
является лучшим словом для обозначения "может быть установлен только в конструкторе" , но это то, с чем мы застряли.
Это на самом деле функция, которую многие люди запросили, поэтому будем надеяться, что она будет представлена в гипотетической новой версии C # в ближайшее время.
См. этот связанный вопрос .
-121--1308724-(new Date).getHours()
получит локальный час времени (0-23) клиента. На основе этого значения замените таблицу стилей для страницы. Я бы установил дневную таблицу стилей по умолчанию и поменял ее местами, когда это необходимо.
Сначала я думаю, что вы хотите выполнить эту операцию как можно скорее на клиенте, чтобы избежать любого потенциального переформатирования браузера .
-121--2913723- При получении List
из реализуемого вызова метода не возвращайте null
, возвращайте пустой List
.
Если не удается изменить реализацию, выполняется проверка null
. Если значение не должно быть null
, вызовите исключение.
Я бы не пошел на вспомогательный метод, который возвращает пустой список, потому что это может быть полезно в некоторых случаях, но тогда вы бы привыкли называть его в каждом цикле вы делаете, возможно, скрывая некоторые ошибки.