如何在JRE方法中为参数定义Eclipse外部空注释

时间:2015-09-14 12:48:20

标签: java eclipse annotations nullable external-annotations

我正在尝试使用Eclipse external null annotations<T> T[] toArray(T[] a)注释JRE方法java.util.Set。预期的效果应该等同于:

 public interface Set<E> extends Collection<E> {
     ...
     <T> T @NonNull[] toArray(T @NonNull[] a);
     ...
 }

使用Eclipse的Annotate命令时,我可以正确地注释方法的返回类型(在我选择T[]并将光标定位在[之前)。但是尝试对参数执行相同操作失败。按下Cmd-1只会发出哔哔声,选择&#34; Annotate&#34;从上下文菜单中调用命令时。

我最终手动编辑相应的Set.eea文件以定义所需的注释,并处理正确的eea file layout。即我更改了annotatedSignature:

class java/util/Set
toArray
 <T:Ljava/lang/Object;>([TT;)[TT;
 <T:Ljava/lang/Object;>([TT;)[1TT;

 <T:Ljava/lang/Object;>([1TT;)[1TT;

这很好用,编译器正确处理了注释。

因为我可以注释返回类型而不是参数类型,我想知道我做错了什么。或者这是当前Eclipse版本的限制吗?

我正在使用Eclipse Mars Release(4.5.0,Build id:20150621-1200)  和jdk1.8.0_60。

1 个答案:

答案 0 :(得分:2)

这确实是一个错误,我刚刚提交https://bugs.eclipse.org/477461来跟踪此事。

这是bug 464081,它固定为4.6 M1(即,当前版本可用于Eclipse Neon),目前建议用于4.5.2(Mars.2)