В реальном проекте у нас будет много мест, где нам нужно оценить нулевую проверку, если вы этого не сделаете, чтобы оценить нулевую проверку, может возникнуть NullPointerException исключение.

Сначала посмотрите на реальный проект некоторыми способами, чтобы определить нулевой путь:

if (obj == null) {
    //do something
}

if (obj2 != null) {
    //do something
}

Обычно мы определяем, является ли объект Null или нет, мы можем использовать Objects.nonNull(obj) в java.util, ObjectUtil в hutool, что в некотором роде сделает ваш код более элегантным.

На самом деле, есть несколько видов сценариев, которые мы должны определить null или empty. Позвольте мне показать вам некоторые из них.

1. Пустой список

Как и List, это более специальное в проекте может не только определять ненулевое значение. List не равно null и List.size() не равно 0 — это две разные вещи, некоторые люди могут спутать эти два случая.

List не равно null, значит он был инициализирован, часть памяти кучи принадлежит его территории, а размер 0 означает, что внутри него ничего не помещалось.

Поэтому обычно объединяют list ! = null && list.size > 0, чтобы определить, является ли он пустым. Но мы могли бы использовать:

list = new ArrayList<String>();
if (CollectionUtils.isNotEmpty(list)) {
    //do something
}

2. Пустая строка

Вызов equals(String) или length() для нулевого String выдает java.lang.NullPointerException.

Для пустой строки есть несколько способов:

//1, most people use one of the methods, intuitive, convenient, but inefficient:
if(a == null || a.equals("")) {
    //do something
}

//2, compare the length of the string, efficient:
if(a == null || a.length() == 0) {
    //do something
}
//3, Java SE 6.0 has just begun to provide, the efficiency and method two is almost the same:
if(a == null || a.isEmpty()) {
    //do something
}

Конечно, вы также можете использовать инструмент org.apache.commons.lang.StringUtils.

StringUtils.isNotBlank(a);
//StringUtils.isNotBlank(null) = false
//StringUtils.isNotBlank("") = false
//StringUtils.isNotBlank(" ") = false
//StringUtils.isNotBlank("bob")…