如何为 JRE 方法中的参数定义 Eclipse 外部空注释
How to define Eclipse external null annotations for parameters in JRE methods
我正在尝试使用 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 命令时,我可以正确地注释方法的 return 类型(在我选择 T[]
并将光标定位在 [
之前)。但是,尝试对参数执行相同操作失败。按 Cmd-1 只会发出哔哔声,从上下文菜单调用命令时选择 "Annotate" 也是如此。
我最终手动编辑了相应的 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;
这工作正常,编译器正确处理了注释。
因为我可以注释 return 类型而不是参数类型,所以我想知道我做错了什么。或者这是当前 Eclipse 版本的限制?
我正在使用 Eclipse Mars Release (4.5.0, Build id: 20150621-1200)
和jdk1.8.0_60.
这确实是一个错误,我刚刚提交 https://bugs.eclipse.org/477461 来跟踪它。
这是 bug 464081 已针对 4.6 M1 修复(即,在当前针对 Eclipse Neon 的构建中可用),目前建议用于 4.5.2 (Mars.2)
我正在尝试使用 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 命令时,我可以正确地注释方法的 return 类型(在我选择 T[]
并将光标定位在 [
之前)。但是,尝试对参数执行相同操作失败。按 Cmd-1 只会发出哔哔声,从上下文菜单调用命令时选择 "Annotate" 也是如此。
我最终手动编辑了相应的 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;
这工作正常,编译器正确处理了注释。
因为我可以注释 return 类型而不是参数类型,所以我想知道我做错了什么。或者这是当前 Eclipse 版本的限制?
我正在使用 Eclipse Mars Release (4.5.0, Build id: 20150621-1200) 和jdk1.8.0_60.
这确实是一个错误,我刚刚提交 https://bugs.eclipse.org/477461 来跟踪它。
这是 bug 464081 已针对 4.6 M1 修复(即,在当前针对 Eclipse Neon 的构建中可用),目前建议用于 4.5.2 (Mars.2)