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

部分截图: