Eclipse Neon快速助手自动添加@NonNull

时间:2016-05-24 11:41:59

标签: java eclipse annotations eclipse-neon

在我的Eclipse Neon工作区设置中,我检查了[x] Enable annotation-based null analysis。现在,当我从快速辅助中执行Assign statement to new variable时,Eclipse有时会将@NonNull添加到新变量分配中。所以第1行的内容,我得到第2行:

Deprecated annotation = Main.class.getAnnotation(Deprecated.class); // line 1
@NonNull Deprecated annotation = Main.class.getAnnotation(Deprecated.class); // line 2

这提出了两个问题:

  1. 如何启用和禁用此行为?在同一工作区内的第二个项目中,Eclipse并不是这样。因此,它不仅仅依赖于在工作区设置中配置的基于注释的空分析。

  2. 为什么Eclipse总结annotation@NonNull,而返回值可以明确为null(通过文档):

  3.   

    java.lang.annotation.Annotation java.lang.Class.getAnnotation(java.lang.Class annotationClass)

         

    如果此类注释存在,则返回此元素对指定类型的注释,否则返回null。

1 个答案:

答案 0 :(得分:2)

你是对的,Eclipse计算错误的空注释: @NonNull 而不是 @Nullable 。如果您use external null annotation并将方法返回类型java.lang.Class.getAnnotation(Class<A>)注释为 @Nullable ,则将语句分配给新变量快速修复将创建正确的空注释

要禁用空注释的创建,必须取消选中[x] Use default annotations for null specification[x] Enable annotation-based null analysis下方)。不幸的是,似乎还有另一个错误:单击复选框可打开 Null规范的注释对话框。作为此错误的解决方法,请将primary指定为辅助批注,并将n.a指定为每个批注的主要批注。

请问report both bugs to Eclipse