当前位置: 首页 > 知识库问答 >
问题:

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

茅星华
2023-03-14

我想在我的项目中使用Jetbrains@nullable/@notnull注释。

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

为什么IntelliJ IDEA抱怨空检查?文件指出:

带NotNull注释的元素声明null值被禁止返回(对于方法)、传递(参数)和保留(局部变量和字段)。

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

共有1个答案

郭德惠
2023-03-14

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

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

 类似资料:
  • 问题内容: 当我这样做时(在laravel中): 它说: SQLSTATE [HY093]:无效的参数号(SQL:SELECT * FROM my_table,其中id =:id || id =:id) 但是当我这样做时(使用纯PHP): 成功了。我究竟做错了什么? PS显然,遇到问题时我运行的查询更有意义。 UPD 或多或少的真实查询: 问题答案: 从我所看到的一切都可以归结为无法处理命名参数。

  • 问题内容: 用Pycharm的代码检查器初始化字典时,会产生警告,说 这个字典的创建可以重写为字典文字。 如果我重写它,警告就会消失。由于已经 是 字典文字,因此我很确定该消息是错误的。此外,似乎两者都有效,并且是Pythonic。 这个相关的问题似乎可以得出结论,选择仅取决于样式/偏好: “ d = dict()”和“ d = {}”之间的差异 皮查姆为什么会抱怨? 更新: Mac钉了它。该警告

  • 我一直在尝试以多种不同的方式在windows上构建fltk,但最终我总是得到: 配置:错误:C编译器无法创建可执行文件(msys fltk/配置) 或 检查C编译器是否正常工作:C:/MinGW/bin/gcc.exe--已损坏(CMake-gui) 我用fltk 1.3.0和1.3.3试用过它,我甚至用过三个不同的MinGW发行版,GCC版本:。但它无法编译。以下是由生成的一些错误日志/配置文件

  • 问题内容: 我尝试在Ubuntu 12.04上安装Pycharm,并且得到以下信息: 正常工作该怎么办? 问题答案: 由于Oracle设置的限制,大多数较新的发行版不再包含Oracle(Sun)JDK。相反,它们与OpenSDK一起提供。尽管OpenSDK适用于大多数应用程序,但PyCharm似乎存在一些问题。 您必须手动安装Oracle(Sun)JDK,并确保它是默认JDK或在启动PyCharm

  • 当我尝试启动spring boot应用程序时,我遇到了以下错误。它甚至在我提供作业参数之前就给出了一个错误,该参数是作业的参数。 许多讨论建议使用资源作为来解决这个问题。但对我没用。提前谢了。

  • 我在使用IntelliJ IDEA 2020.2时启用了检查“@NotNull/@Nullable problems”。在编写自定义ThreadFactory时,我在的参数上收到IntelliJ IDEA检查警告“Not annotated parameter overrides@NotNull parameter”: 爪哇。util。同时发生的ThreadFactory接口不注释。IDEA的代码