数据结构的多态性

时间:2012-10-01 17:40:20

标签: java arraylist polymorphism

  

可能重复:
  Implementations and Collections

我的超级班是考试。我的一个子类是Analytical。

这在我的意识形态

中是有效的
Exam object = new Analytical();

然而事实并非如此。

ArrayList<Exam> object = new ArrayList<Analytical>();

错误是从新到语句的末尾,它说“将对象的类型更改为ArrayList。所以我的问题是如何正确地利用这个数据结构的多态。谢谢。

3 个答案:

答案 0 :(得分:1)

在泛型类型声明的两边不能有不同的参数化类型。

所以,你必须在两边使用相同的类型..

应该是: -

ArrayList<? extends Exam> object = new ArrayList<Analytical>();

ArrayList<Exam> object = new ArrayList<Exam>();

ArrayList<? extends Exam> object = new ArrayList<Exam>();

多态性,不适用于参数化类型..

答案 1 :(得分:0)

您需要将其更改为:

ArrayList<? extends Exam> object = new ArrayList<Exam>();

Inheritance in generics与我们的常规理解略有不同。

答案 2 :(得分:0)

Collections仅在Compilation时间内{strong}检查,而不是在Runtime期间,因此已采取此措施,因此错误错误类型不会进入集合 ...

ArrayList<? extends Exam> object = new ArrayList<Analytical>();

ArrayList<? extends Exam> object = new ArrayList<Exam>();