IntelliJ IDEA抱怨@NotNull参数的空检查

Eur*_*uro 7 java annotations intellij-idea notnull

我想在我的项目中使用Jetbrains @ Nullable/@NotNull Annotations.

截图

我有一个带有@NotNull字段的类.构造函数自然不接受,null而是抛出异常.当然,这个构造函数的参数也可以用@NotNull注释.

为什么IntelliJ IDEA会抱怨空检?文件说明:

使用NotNull声明的元素声明null值被禁止返回(对于方法),传递给(参数)并保持(局部变量和字段).

但是我仍然需要在运行时检查null值,以防构建系统不理解Annotation并接受类似的语句new Car(null).我错了吗?

Pet*_*mov 5

如果使用JetBrains @NotNull注释,运行时断言将添加到已编译的字节码中,以保证null不会在那里传递.那么在源代码中编写相同的检查是没有意义的.这种方法对我们很有效.

如果您使用其他注释或者只是不想检测字节码,可以通过按Alt + Enter,"编辑检查设置"并选中"忽略断言语句"来禁用此特定警告.这些条件语句被IDE视为断言.


Raj*_*gan 0

如果构造函数的参数不为空,则使用 if 语句检查空值是没有意义的。

正如我们所知,无论参数 Engine 保存的值不为空,此检查将始终为 false。

因此,屏幕截图中显示的检查将完全有意义。如果您确实不想看到空检查检查,请从首选项部分禁用它。

简而言之,您正在检查的值在构造函数内不为 null,并且 IDE 知道这一点。