IntelliJ中不明确的检查警告“NullableProblems”

时间:2015-07-06 09:40:54

标签: java intellij-idea code-inspection

为什么我会在IntelliJ的“NullableProblems”检查中收到警告:

public class Test implements Comparable<Test> {
    @Override
    public int compareTo(Test o) {
        return 0;
    }
}

我正在使用IntelliJ 14.1.4并使用Java 1.7进行编译

截图:

enter image description here

在参数之前添加@NotNull没有帮助:

enter image description here

3 个答案:

答案 0 :(得分:22)

来自Comparable.compareTo

@throws NullPointerException if the specified object is null

所以IntelliJ知道,该对象不应该是null并添加@NotNull注释automatically

  

IntelliJ IDEA将仔细查看SDK和库字节码,并自动推断这些注释,以便稍后可以使用它们来分析源代码,以找出忽略null的位置。

您的overriden方法不包含此批注,因此覆盖此行为使参数可为空 - 违反Comparable接口的合约。

您可以通过在参数前添加@NotNull来解决此问题。

您还可以通过按 Alt + Enter 禁用此检查,在弹出菜单中选择警告并在子菜单中选择Disable inspection。 / p>

有关@NotNull / @NonNull注释的详情,请查看Web Helpthis thread

答案 1 :(得分:10)

这可以在IntelliJ IDEA中轻松全局配置,对我个人来说是推荐的方式。如果您愿意,可以添加自己的注释 即Select orders.idOrd, orders.ordDate, client.name, orders.price, orders.totale From orders join client on client.idClient = orders.Name

设置路径:
Select o.idOrd, o.ordDate, c.name, o.price, o. totale From orders o join client c on c.idClient = o.Name

一些截图: enter image description here enter image description here

答案 2 :(得分:-1)

这是因为您覆盖了没有@NotNull注释的方法。

如果覆盖方法没有webView注释,IntelliJ IDEA会发出警告。