我有一个final变量可以为null的父类。它使用Nullable进行注解。父类由多个类扩展,其中一些类将此变量设置为Nullable,但另一些类将此变量设置为NonNull。现在,当我在子类中使用变量时,我看到了关于NullPointerException的警告。当我知道变量不能为null时,用if/null括起来似乎是多余的(在子类构造函数中,它被注解为NonNull)。如何让任何阅读代码的人都清楚它不能为空,并让IDE也清楚?我的想法是先使用assert属性!= null.但是我不知道这是不是一个好方法。
class A {
@Nullable
final String propertyA;
public A (@Nullable String propertyA) {
this.propertyA = propertyA;
}
}
class B extends A {
public B (@NotNull String propertyA) {
super(propertyA);
}
public void doSomething() {
//Here is the warning from IntelliJ but I know it is not null.
propertyA.equals(null);
}
}
字符串
1条答案
按热度按时间5kgi1eie1#
通过在doSomething方法中调用“propertyA”获得的值是类A中的属性,它用@Nullable注解。
如果你真的想避免这种情况,你可以使用一个getter,并在B类中用@NotNull注解覆盖它,但你只会复制你的代码。
请注意,@NotNull注解并不阻止值为空,它仅用于IJ中的代码警告!您应该在B构造函数中添加一个检查,以验证该值是否真的不为null。