Java 如何为JRE方法中的参数定义Eclipse外部空注释
我正试图使用Eclipse的方法从Java 如何为JRE方法中的参数定义Eclipse外部空注释,java,eclipse,annotations,nullable,external-annotations,Java,Eclipse,Annotations,Nullable,External Annotations,我正试图使用Eclipse的方法从java.util.Set注释JRE方法T[]toArray(T[]a)。预期效果应与此等效: public interface Set<E> extends Collection<E> { ... <T> T @NonNull[] toArray(T @NonNull[] a); ... } 到 ([1TT;)[1TT; 这可以很好地工作,并且编译器可以正确地处理注释 由于我可以注释返回
java.util.Set
注释JRE方法T[]toArray(T[]a)
。预期效果应与此等效:
public interface Set<E> extends Collection<E> {
...
<T> T @NonNull[] toArray(T @NonNull[] a);
...
}
到
([1TT;)[1TT;
这可以很好地工作,并且编译器可以正确地处理注释
由于我可以注释返回类型而不是参数类型,我想知道我做错了什么。或者这是当前Eclipse版本的一个限制
我正在使用EclipseMars版本(4.5.0,构建id:20150621-1200)
和jdk1.8.0_60。这确实是一个bug,我只是为了跟踪它而归档的
这一点在4.6m1中得到了修复(即,在Eclipse Neon的当前版本中可用),目前建议在4.5.2(Mars.2)中使用有点离题:这些外部注释是否有预编译的集合?或者您是否在维护自己的集合?@HRJ我正在维护自己的外部注释文件集合。但是我计划将它们“开源”并很快(通过GitHub)发布。完成后,我会在这里留下一个注释。
class java/util/Set
toArray
<T:Ljava/lang/Object;>([TT;)[TT;
<T:Ljava/lang/Object;>([TT;)[1TT;
<T:Ljava/lang/Object;>([1TT;)[1TT;