0

可能的重复:
实现和集合

我的超级课是考试。我的子类之一是分析。

这在我的 ide 中是有效的

Exam object = new Analytical();

然而事实并非如此。

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

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

4

3 回答 3

1

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

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

它应该是: -

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

或者

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

或者

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

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

于 2012-10-01T17:43:11.193 回答
0

Collections仅在time 期间而不是在 期间检查,因此已采取此措施,因此错误的类型不会进入集合...CompilationRuntime

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

或者

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

于 2012-10-01T17:55:35.353 回答
0

您需要将其更改为:

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

泛型中的继承与我们通常的理解没有什么不同。

于 2012-10-01T17:42:28.760 回答