泛型类型的元素列表 - Java

时间:2014-08-16 16:27:22

标签: java class generics

我无法处理某种结构,我必须与之合作:

Class<? extends Node> nodesClass = gds.getNodeType();
List<nodesClass> nodes = new ArrayList();

现在eclipse不接受&#34; nodesClass&#34;。什么是创建类型为nodesClass的实例列表的代码?

2 个答案:

答案 0 :(得分:0)

我认为您正在尝试通过调用

来获取用户的类类型

Class<? extends Node> nodesClass = gds.getNodeType();

然后通过使用方法gds.getNodeType()给出的类类型来创建ArrayList对象。

您可以使用List<? extends Node> nodes = new ArrayList<>();来代替nodes,以便ArrayList变量可以为任何Node对象分配泛型类型,该类型应该是nodes类的子类

但问题是你无法向nodes.add(new Node())变量添加任何新对象,即

List是非法的,但您可以键入secure,您只能拥有Node具有{{1}}类的泛型类子类的对象。

如果这个答案不适合你,请告诉我你的确切要求

答案 1 :(得分:0)

您可以使用您尝试创建的列表执行某些有用的操作的唯一方法是将其创建为:

List<Node> nodes = new ArrayList();

尝试创建List<? extends Node>列表只会使您的空列表无法使用 - 您将无法向其中添加任何内容。