将jOOQ表达式分配给局部变量时如何防止Eclipse添加@NotNull注释
How to prevent Eclipse from adding @NotNull annotation when assigning jOOQ expression to local variable
从 jOOQ 3.14 开始,使用 jOOQ 时代码如下:
DSL.val(1);
我喜欢将上述表达式分配给局部变量,所以我正在使用 Eclipse IDE 快速修复操作 “将语句分配给新的局部变量” ,它添加了这个导入:
import org.jetbrains.annotations.NotNull;
并生成此代码:
@NotNull
Param<Integer> val = DSL.val(1);
IntelliJ 不会发生这种情况,其 “引入局部变量” 快速修复生成所需的代码:
Param<Integer> val = DSL.val(1);
如何防止意外插入 @NotNull
注释?
Eclipse 中有一个待解决的错误可以修复此问题:https://bugs.eclipse.org/bugs/show_bug.cgi?id=565463。当前行为的基本原理(在 2020-12 (4.18.0) 中仍然存在)可以在那个问题中看到。
解决方法是在首选项 > Java 编译器 > Errors/Warnings > 启用基于注释的空分析
中打开基于注释的空分析
...并将 jetbrains 注释设置为主要 and/or 辅助注释:
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 代码上处于活动状态,这可能是也可能不是您想要的。
从 jOOQ 3.14 开始,使用 jOOQ 时代码如下:
DSL.val(1);
我喜欢将上述表达式分配给局部变量,所以我正在使用 Eclipse IDE 快速修复操作 “将语句分配给新的局部变量” ,它添加了这个导入:
import org.jetbrains.annotations.NotNull;
并生成此代码:
@NotNull
Param<Integer> val = DSL.val(1);
IntelliJ 不会发生这种情况,其 “引入局部变量” 快速修复生成所需的代码:
Param<Integer> val = DSL.val(1);
如何防止意外插入 @NotNull
注释?
Eclipse 中有一个待解决的错误可以修复此问题:https://bugs.eclipse.org/bugs/show_bug.cgi?id=565463。当前行为的基本原理(在 2020-12 (4.18.0) 中仍然存在)可以在那个问题中看到。
解决方法是在首选项 > Java 编译器 > Errors/Warnings > 启用基于注释的空分析
中打开基于注释的空分析...并将 jetbrains 注释设置为主要 and/or 辅助注释:
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 代码上处于活动状态,这可能是也可能不是您想要的。