Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Вы, конечно, можете:
assert x > 0 : "x must be greater than zero, but x = " + x;
См. Программировать с Утверждениями для получения дополнительной информации.
assert (condition) : "some message";
я рекомендовал бы поместить условное выражение в скобках
assert (y > x): "y is too small. y = " + y;
, Воображают, столкнулись ли Вы с кодом как это...
assert isTrue() ? true : false : "some message";
не забывают, что это не имеет никакого отношения, утверждает, что Вы записали бы в JUnit.
Это абсолютно делает:
assert importantVar != null : "The important var was null!";
Это добавит, что "Важный var был пустым" к исключению, которое выдается.
Если Вы используете
assert Expression1 : Expression2 ;
, Expression2 используется в качестве сообщения детали для AssertionError.