【问题标题】:Java Generics - Unexpected boundsJava 泛型 - 意外的界限
【发布时间】:2017-03-02 10:45:10
【问题描述】:

这里没有问题

public class MyList<E extends Number> extends ArrayList<E> {
}

无异常绑定。这是什么意思?为什么错了?感谢您的帮助。

public class MyList<E extends Number> extends ArrayList<E extends Number> {

}

【问题讨论】:

  • 您能否解释一下您何时收到此错误?这是编译错误吗?或者它是在实例化这个类时出现的还是什么?
  • 编译错误

标签: java generics arraylist bounds


【解决方案1】:
public class MyList<E extends Number> extends ArrayList<E> {
    private static final long serialVersionUID = -1025575227555594680L;

}

这应该没有编译错误,甚至没有警告。如果您仍然遇到同样的错误,请告诉我。

【讨论】:

    【解决方案2】:

    class MyList&lt;E extends Number&gt; 可以,因为您声明一个类型参数,因此您必须给它一个名称 (E),并且您可以选择将其声明为有界 (extends Number)。

    extends ArrayList&lt;E&gt; 中,您只需要“使用”一个类型参数:使用“&lt;E&gt;”,您指的是在您的类中声明的参数,其中 已经 给出了一个界限它的声明。 “&lt;? extends Number&gt;”(用? 代替E)也将被编译器接受(尽管它不是你想要的)。而是将“&lt;E extends Number&gt;”作为类型参数声明,所以是编译错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多