IntelliJ 中检查警告不明确 "NullableProblems"
Unclear inspection warning "NullableProblems" in IntelliJ
为什么我从 IntelliJ 中的 "NullableProblems" 检查中收到警告:
public class Test implements Comparable<Test> {
@Override
public int compareTo(Test o) {
return 0;
}
}
我正在使用 IntelliJ 14.1.4 并使用 Java 1.7
进行编译
截图:
在参数前添加 @NotNull
没有帮助:
这是因为您正在覆盖一个没有 @NotNull
注释的方法。
如果覆盖方法没有 @NotNull
注释,IntelliJ IDEA 会警告您。
来自Comparable.compareTo
:
@throws NullPointerException if the specified object is null
所以 IntelliJ 知道对象不应该是 null
并添加了一个 @NotNull
注释 automatically:
IntelliJ IDEA will look carefully at SDK and libraries bytecode and will infer these annotations automatically so that they can later be used to analyze source code to spot places where you overlooked null.
您的覆盖方法不包含此注释,因此它 覆盖 此行为使参数可为空 - 违反 Comparable
接口的约定。
在参数前加上@NotNull
即可解决。
您也可以通过按 Alt + Enter,在弹出菜单中选择警告并选择 Disable inspection
在子菜单中。
查看 Web Help and this thread 了解有关 @NotNull
/ @NonNull
注释的更多信息。
这可以在 IntelliJ IDEA 中轻松进行全局配置,对我个人来说是推荐的方式。如果需要,您可以添加自己的注释。
即 javax.validation.constraints.NotNull
设置路径:
Settings > Editor > Inspections > @NotNull/@Nullable problems > Configure annotations
部分截图:
为什么我从 IntelliJ 中的 "NullableProblems" 检查中收到警告:
public class Test implements Comparable<Test> {
@Override
public int compareTo(Test o) {
return 0;
}
}
我正在使用 IntelliJ 14.1.4 并使用 Java 1.7
进行编译截图:
在参数前添加 @NotNull
没有帮助:
这是因为您正在覆盖一个没有 @NotNull
注释的方法。
如果覆盖方法没有 @NotNull
注释,IntelliJ IDEA 会警告您。
来自Comparable.compareTo
:
@throws NullPointerException if the specified object is null
所以 IntelliJ 知道对象不应该是 null
并添加了一个 @NotNull
注释 automatically:
IntelliJ IDEA will look carefully at SDK and libraries bytecode and will infer these annotations automatically so that they can later be used to analyze source code to spot places where you overlooked null.
您的覆盖方法不包含此注释,因此它 覆盖 此行为使参数可为空 - 违反 Comparable
接口的约定。
在参数前加上@NotNull
即可解决。
您也可以通过按 Alt + Enter,在弹出菜单中选择警告并选择 Disable inspection
在子菜单中。
查看 Web Help and this thread 了解有关 @NotNull
/ @NonNull
注释的更多信息。
这可以在 IntelliJ IDEA 中轻松进行全局配置,对我个人来说是推荐的方式。如果需要,您可以添加自己的注释。
即 javax.validation.constraints.NotNull
设置路径:
Settings > Editor > Inspections > @NotNull/@Nullable problems > Configure annotations
部分截图: