代码之家  ›  专栏  ›  技术社区  ›  hd42

有没有办法在类的泛型参数上使用eclipse外部注释?

  •  1
  • hd42  · 技术社区  · 6 年前

    我想注释vaadin的hascomponents类,它扩展了iterable。我可以这样注释迭代器()方法:

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

    这样我就可以用循环的经典迭代

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

    但当我尝试像

    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 回复  |  直到 6 年前
        1
  •  0
  •   Tatu Lund    6 年前

    如果您的最终目标是对循环有一个简短的指针,并且使用Java 8或更新器,则可以使用流和lambda以如下方式使用HaseCuffic(..):

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