Избегать! = Нулевые заявления - PullRequest
3805 голосов
/ 07 ноября 2008

Я использую object != null много, чтобы избежать NullPointerException.

Есть ли хорошая альтернатива этому?

Например:

if (someobject != null) {
    someobject.doCalc();
}

Это позволяет избежать NullPointerException, когда неизвестно, является ли объект null или нет.

Обратите внимание, что принятый ответ может быть устаревшим, см. https://stackoverflow.com/a/2386013/12943 для более позднего подхода.

Ответы [ 62 ]

0 голосов
/ 04 октября 2016

Нулевой объектный образец может использоваться как решение этой проблемы. Для этого необходимо изменить класс someObject.

public abstract class SomeObject {
   public abstract boolean isNil();
}

public class NullObject extends SomeObject {
   @Override
   public boolean isNil() {
      return true;
   }
}
public class RealObject extends SomeObject {
   @Override
   public boolean isNil() {
      return false;
   }
}

Теперь стоит проверить,

 if (someobject != null) {
    someobject.doCalc();
}

Мы можем использовать,

if (!someObject.isNil()) {
   someobject.doCalc();
}

Ссылка: https://www.tutorialspoint.com/design_pattern/null_object_pattern.htm

0 голосов
/ 19 октября 2015

Вы можете связать свой класс с модульным тестированием, используя такую ​​среду, как JUnit. Таким образом, ваш код будет чистым (без ненужных проверок), и вы будете уверены, что ваши экземпляры не будут нулевыми.

Это одна из веских причин (из многих) использовать модульное тестирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...