为什么我会从 IntelliJ 中的“NullableProblems”检查中收到警告:
public class Test implements Comparable<Test> {
@Override
public int compareTo(Test o) {
return 0;
}
}
我正在使用 IntelliJ 14.1.4 并使用 Java 1.7 进行编译
截屏:
在参数之前添加@NotNull
没有帮助:
为什么我会从 IntelliJ 中的“NullableProblems”检查中收到警告:
public class Test implements Comparable<Test> {
@Override
public int compareTo(Test o) {
return 0;
}
}
我正在使用 IntelliJ 14.1.4 并使用 Java 1.7 进行编译
截屏:
在参数之前添加@NotNull
没有帮助:
来自Comparable.compareTo
:
@throws NullPointerException if the specified object is null
所以 IntelliJ 知道,该对象不应该是并自动null
添加@NotNull
注释:
IntelliJ IDEA 将仔细查看 SDK 和库字节码,并自动推断这些注释,以便以后可以使用它们来分析源代码以发现您忽略 null 的地方。
您的覆盖方法不包含此注释,因此它会覆盖此行为,使参数可为空 - 违反Comparable
接口的合同。
@NotNull
您可以通过在参数之前添加来解决此问题。
您也可以通过按Alt+ Enter、在弹出菜单中选择警告并Disable inspection
在子菜单中选择来禁用此检查。
这是因为您正在覆盖没有@NotNull
注释的方法。
如果覆盖方法没有@NotNull
注释,IntelliJ IDEA 会发出警告。