Каков наилучший способ проверить объект и его члены равны нулю в Java - PullRequest
0 голосов
/ 30 января 2020

Имеем этот кусок кода:

Class X {
    Map< Y, Z> mapFromNameToZObjects;
}

Я хочу проверить, являются ли X и карта нулевыми. В настоящее время у меня есть следующее:

private checkFunction(X x) {
  If (x == null || x.getMap.isNullOrEmpty) { 
      throw some Exception
   }
}

Интересно, есть ли более красивый способ проверить это.

Ответы [ 5 ]

2 голосов
/ 30 января 2020

Вы можете использовать Optional с его filter и map методами:

private void checkFunction(X x) throws Exception {
    Optional.ofNullable(x)
            .map(X::getMap)
            .filter(map -> !map.isEmpty())
            .orElseThrow(() -> new Exception()); // your exception here

  //...
}
1 голос
/ 30 января 2020

Используя Optional.ofNullable() и Optional.map()

public static class X<K, V>{
    Map<K, V> mapFromNameToZObjects;
    public Map<K, V> getMap() {
        return mapFromNameToZObjects;
    }
}

public static void main(String[] args) {
    X<String, String> x = new X<>();

    Optional<Map<String, String>> optionalMap = Optional.ofNullable(x).map(X::getMap);

    boolean allNull = !(optionalMap.isPresent());
}
0 голосов
/ 30 января 2020

Если объект имеет значение null, то в нем нет элементов, поэтому нельзя одновременно использовать объект и его элементы как null.

Если вы хотите проверить, является ли объект или его поле имеет значение null, тогда вы можете использовать:

    if (x == null || x.getMap() == null) {
        // throw exception
    }

Если вы хотите также проверить, что его карта пуста (она не содержит сопоставлений значения ключа), тогда вы можете использовать:

    if (x == null || x.getMap() == null || x.getMap().isEmpty()) {
        // throw exception
    }
0 голосов
/ 30 января 2020

Если вы хотите закодировать его самостоятельно.

if (x == null || x.isEmpty())

Если вы уже используете библиотеку коллекций apache .

if (MapUtils.isEmpty(x))

0 голосов
/ 30 января 2020

Самый простой способ проверить это entity == null. Нет более короткого способа сделать это.

Обратите внимание, что в стандартной библиотеке есть метод для этого:

Objects.isNull(Object obj)

И еще один, противоположный приведенному выше:

Objects.nonNull(Object obj)

И есть еще один, который можно использовать, чтобы заставить значение быть не нулевым, иначе выдается исключение NullPointerException:

T Objects.requireNonNull(T obj);

Примечание. Класс Objects был добавлен в Java 7, но методы isNull () и nonNull () были добавлены только в Java 8. Ссылка: Как проверить, является ли объект нулевым или нет, кроме == null

...