Делает java.утиль.Список.isEmpty () проверьте, является ли сам список нулевым? [дубликат]
этот вопрос уже есть ответ здесь:
тут java.util.List.isEmpty() проверьте, если сам список составляет null, или я должен сделать это сам проверить?
например:
List test = null;
if(!test.isEmpty()) {
for(Object o : test) {
// do stuff here
}
}
будет ли это бросить NullPointerException тест потому что null?
8 ответов:
вы пытаетесь вызвать
isEmpty()методnullссылка (какList test = null;). Это, безусловно, броситьNullPointerException. Вы должны сделать (проверкаnullпервая).метод
isEmpty()возвращает true, еслиArrayListобъект не содержит элементов; false в противном случае (для этогоListсначала должен быть создан, то есть в вашем случае этоnull).Edit:
вы можете ознакомиться этой вопрос.
Я бы рекомендовал использовать Apache Commons Collections
который реализует его вполне нормально и хорошо документирован:
/** * Null-safe check if the specified collection is empty. * <p> * Null returns true. * * @param coll the collection to check, may be null * @return true if empty or null * @since Commons Collections 3.2 */ public static boolean isEmpty(Collection coll) { return (coll == null || coll.isEmpty()); }
этой будет бросить
NullPointerException- как и любая попытка вызвать метод экземпляра наnullссылка - но в таких случаях вы должны сделать явную проверку противnull:if ((test != null) && !test.isEmpty())Это гораздо лучше и яснее, чем распространение
Exception.
вызов любого метода по любой нулевой ссылке всегда приведет к исключению. Сначала проверьте, является ли объект null:
List<Object> test = null; if (test != null && !test.isEmpty()) { // ... }В качестве альтернативы, напишите метод для инкапсуляции этой логики:
public static <T> boolean IsNullOrEmpty(Collection<T> list) { return list == null || list.isEmpty(); }затем вы можете сделать:
List<Object> test = null; if (!IsNullOrEmpty(test)) { // ... }
нет
java.util.List.isEmpty()не проверяет, является ли список нулевым.если вы используете Spring framework, вы можете использовать
CollectionUtilsкласса, чтобы проверить, если список пуст или нет. Он также заботится оnullссылки. Ниже приведен фрагмент кода из Spring frameworkCollectionUtilsкласса.public static boolean isEmpty(Collection<?> collection) { return (collection == null || collection.isEmpty()); }даже если вы не используете Spring, вы можете продолжить и настроить этот код, чтобы добавить в свой
AppUtilкласса.
Да, это будет исключение. может быть, вы привыкли PHP код, где
empty($element)также проверяет наличиеisset($element)? В Java это не так.вы можете запомнить это легко, потому что метод непосредственно вызывается в списке (метод принадлежит к списку). Так что если нет списка, то нет и метода. И Java будет жаловаться, что нет списка для вызова этого метода.
В дополнение к ответу Льва Я могу сказать, что лучше использовать
if(CollectionUtils.isNotEmpty(test)){...}Это также проверяет значение null, поэтому никакая ручная проверка не требуется.
вы также можете использовать свой собственный метод isEmpty (для нескольких коллекций). Добавьте этот класс Util.
public static boolean isEmpty(Collection... collections) { for (Collection collection : collections) { if (null == collection || collection.isEmpty()) return true; } return false; }
Comments