Java 为什么@NotNull anotation不删除警告?

Java 为什么@NotNull anotation不删除警告?,java,annotations,warnings,notnull,Java,Annotations,Warnings,Notnull,我编写了一个实现可比较接口的类。我使用了@NotNull注释来抑制方法参数中的警告。但是它仍然显示一个警告。IDE会自动为@NotNull导入此包com.sun.istack.internal.NotNull。为什么会这样?如果不使用此批注,如何删除此警告? 我使用的是带有Java8SE的InteijUltimate。 这是我的代码片段 谢谢。显然,您应该使用 public int compareTo(@NonNull Node node) { 而不是 public int compareTo

我编写了一个实现可比较接口的类。我使用了
@NotNull
注释来抑制方法参数中的警告。但是它仍然显示一个警告。IDE会自动为
@NotNull
导入此包
com.sun.istack.internal.NotNull
。为什么会这样?如果不使用此批注,如何删除此警告?
我使用的是带有Java8SE的InteijUltimate。 这是我的代码片段


谢谢。

显然,您应该使用

public int compareTo(@NonNull Node node) {
而不是

public int compareTo(@NotNull Node node) {
编译器可以确定代码路径可能接收空值的情况,而无需调试
NullPointerException


对于这些注释,您需要安装。或者您可以尝试其他答案所说的。

更改导入,您可以使用intellij自己的
com.intellij.annotations.NotNull
javax.annotation.Nonnull
javax.validation.constraints.NotNull

这是IntelliJ功能,实际上可以配置要使用的nullable/notnull注释,请参阅


如果这还不能解决问题,并且消息似乎暗示了这一点,请尝试删除
@覆盖
,您正在向超类中没有的参数添加注释。

尝试向
compareTo
方法添加@Nonnull(javax.annotation.Nonnull)。正确,
javax.annotation.NonNull
是正确的注释。@uraimo我在
javax.annotation
包中看不到任何类似
NotNull
NonNull
的注释。当我试图写下
javax.annotation.NotNull
javax.annotation.Nonnull
时,出现了一个错误。更新了我的答案,抱歉,但这个问题有点容易出错:)不是安卓问题,即使ide处于黑暗模式:)@uraimo哇,我的标签错了!xD我会更改它。@uraimo编辑的定义/链接与OP:)天哪。。。我认为所有排列实际上都可以作为真实类使用。。。NotNull、NotNull、NotNull等。。。他的问题是他没有导入IntelliJ接受的注释之一。对不起,但是没有这样的东西
非null
。我还尝试导入
javax.annotation.
包,但没有类似
Nonnull
NotNull
这样的注释。我的jdk版本有问题吗?我目前使用的是java版本“1.8.0_45”。在
javax.annotation
包中没有
@NotNull
@Nonnull
注释。我已经根据您给定的链接更改了配置,但我的ide仍然无法在该包中找到这些注释。除了
ManagedBean