java—如何防止eclipse在向局部变量分配jooq表达式时添加@notnull注解

mpgws1up  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(325)

从jooq 3.14开始,当使用代码如下的jooq时:

DSL.val(1);

我喜欢将上面的表达式赋给局部变量,因此我使用eclipse ide快速修复操作“assign statement to new local variable”,它添加了以下导入:

import org.jetbrains.annotations.NotNull;

并生成以下代码:

@NotNull
Param<Integer> val = DSL.val(1);

intellij的“引入局部变量”快速修复程序不会产生所需的代码:

Param<Integer> val = DSL.val(1);

不需要的插入 @NotNull 你能阻止吗?

xoshrz7s

xoshrz7s1#

eclipse中有一个挂起的bug可以修复此问题:https://bugs.eclipse.org/bugs/show_bug.cgi?id=565463. 当前行为的基本原理(仍存在于2020-2012(4.18.0))可以从该问题中看出。
解决方法是在“首选项”>“java编译器”>“错误/警告”>“启用基于注解的空值分析”中启用基于注解的空值分析

... 以及将jetbrains注解设置为主要和/或次要注解:

eclipse可能找不到注解,在这种情况下,解决方法可能是手动编辑项目的注解 .settings/org.eclipse.jdt.core.prefs 文件,添加以下内容:

org.eclipse.jdt.core.compiler.annotation.nonnull=org.jetbrains.annotations.NotNull
org.eclipse.jdt.core.compiler.annotation.nullable=org.jetbrains.annotations.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled

这种解决方法的副作用当然是空分析现在在jooq代码上处于活动状态,这可能是您想要的,也可能不是您想要的。

相关问题