К несчастью, Java может ссылаться на null
, и на языке нет способа указать, что это не так.
В общем, да, не составляйте интерпретацию для null
и не попадите в ситуацию, когда NPE может быть брошен позже.
JSR305 (теперь неактивный) позволил ваманнотировать параметры, чтобы утверждать, что они не должны быть заданы null
s.
void fn(@Nonnull String a, @Nonnull Integer b, @Nonnull Object c) {
Подробно, но это Java для вас.Существуют и другие библиотеки аннотаций и контролеры, которые делают то же самое, но нестандартно.
(Примечание по поводу заглавных букв: когда слова в виде верблюжьих слов в виде "не-вещь", стандарт не должен начинаться с заглавного слова маршрута, если это не имя класса, поэтому nonthing
и nonnull
.)
Аннотации также фактически не применяют правило, кроме случаев, когда проверяетсязапустить.Вы можете статически включить метод для проверки:
public static <T> T nonnull(T value) {
if (value == null) {
throwNPE();
}
return value;
}
private static void throwNPE() {
throw new NullPointerException();
}
Возвращение значения удобно в конструкторах:
import static pkg.Check.nonnull;
class MyClass {
@Nonnull private final String thing;
public MyClass(@Nonnull String thing) {
this.thing = nonnull(thing);
}
...