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
。