【问题标题】:How to define Eclipse external null annotations for parameters in JRE methods如何为 JRE 方法中的参数定义 Eclipse 外部空注释
【发布时间】:2015-09-14 12:48:19
【问题描述】:

我正在尝试使用 Eclipse 的 external null annotationsjava.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


【解决方案1】:

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

这是 bug 464081,它已在 4.6 M1 中得到修复(即,在当前面向 Eclipse Neon 的版本中可用),目前建议用于 4.5.2(Mars.2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多