IntelliJ IDEA抱怨@NotNull参数的空检查
我想在我的项目中使用Jetbrains @ Nullable / @NotNull Annotations。
我有一个带有@NotNull字段的类。 构造函数自然不接受null
而是抛出exception。 当然,这个构造函数的参数也可以用@NotNull注释。
为什么IntelliJ IDEA会抱怨空检? 文件说明:
使用NotNull声明的元素声明null值被禁止返回(对于方法), 传递给(参数)并保持(局部变量和字段)。
但是我仍然必须在运行时检查空值,以防构建系统不理解Annotation并接受像new Car(null)
这样的语句。 我错了吗?
如果使用JetBrains @NotNull注释,运行时断言将被添加到已编译的字节码中,以保证null不会在那里传递。 那么在源代码中编写相同的检查是没有意义的。 这种方法对我们很有效。
如果您使用其他注释或者只是不想检测字节码,可以通过按Alt + Enter,“编辑检查设置”并选中“忽略断言语句”来禁用此特定警告。 这些条件语句被IDE视为断言。
如果构造函数的参数是Not Null,那么使用和if语句检查null值是没有意义的。
而且我们知道参数Engine保持的值不为null,此检查将始终为false。
因此,屏幕截图中显示的检查将完全合理。 如果您确实不希望看到空检查检查,请从首选项部分禁用它。
简而言之,您检查的值在构造函数中不为null,IDE知道它。
- 使用AnnotationProcessor构建Maven,解析src / main / java中的文件,并生成源代码到generate-test-sources / test-annotations
- jersey中的注释inheritance
- @ParametersAreNonnullByDefault是否也适用于方法返回值?
- 如何使用Hibernate @ Any-related注释?
- Java构建时间常量配置
- 使用Jersey的AbstractHttpContextInjectable自定义方法注释不工作
- 使用注释创建Callables
- 在Stanford CoreNLP中添加新的注释器
- 使用弹簧刻板印象的优点?