我正在尝试使用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。
答案 0 :(得分:2)
这确实是一个错误,我刚刚提交https://bugs.eclipse.org/477461来跟踪此事。
这是bug 464081,它固定为4.6 M1(即,当前版本可用于Eclipse Neon),目前建议用于4.5.2(Mars.2)