【发布时间】:2015-09-14 12:48:19
【问题描述】:
我正在尝试使用 Eclipse 的 external null annotations 从 java.util.Set 注释 JRE 方法 <T> T[] toArray(T[] a)。预期的效果应该是这样的:
public interface Set<E> extends Collection<E> {
...
<T> T @NonNull[] toArray(T @NonNull[] a);
...
}
当使用 Eclipse 的 Annotate 命令时,我可以正确地注释方法的返回类型(在我选择 T[] 并将光标定位在 [ 之前)。但是,尝试对参数执行相同操作会失败。按下 Cmd-1 只会发出哔哔声,从上下文菜单调用命令时选择“注释”也是如此。
我最终手动编辑了相应的Set.eea 文件以定义所需的注释,并注意正确的eea file layout。 IE。我更改了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 版本(4.5.0,内部版本号:20150621-1200) 和 jdk1.8.0_60。
【问题讨论】:
-
有点离题:这些外部注释是否有预编译的集合?还是您在维护自己的收藏?
-
@HRJ 我正在维护自己的外部注释文件集合。不过,我计划将它们设为“开源”并尽快发布(通过 GitHub)。完成后我会在此处留言。
标签: java eclipse annotations nullable external-annotations