有没有一种方法可以在类的通用参数上使用Eclipse外部注释?

时间:2018-10-30 14:39:45

标签: java eclipse null annotations external

我想注释Vaadin的HasComponents类,该类扩展了Iterable。我可以这样注释iterator()-Method:

class com/vaadin/ui/HasComponents
iterator
 ()Ljava/util/Iterator<Lcom/vaadin/ui/Component;>;
 ()L1java/util/Iterator<L1com/vaadin/ui/Component;>;

这样我就可以使用经典的for循环进行迭代

for (Iterator<Component> it = content.iterator(); it.hasNext();) {
  Component c = it.next();
  doSmoething(c);
}

但是当我尝试像这样的foreach循环

for(Component c : content) {
  doSomething(c);
}

我从Eclipse得到警告:

Null type safety (type annotations): The expression of type 'Component' needs unchecked conversion to conform to '@NonNull Component'

大概是因为

HasComponents extends Component, Iterable<@NonNull Component> 

是否可以通过外部注释添加此注释,或者还有其他方法?

1 个答案:

答案 0 :(得分:0)

如果您的最终目标是简化循环,并且您正在使用Java 8或更高版本,则可以通过Streams和Lambda通过以下方式将forEach(..)与HasComponents结合使用:

layout.forEach(component -> { ... do something with component ... });