Java - 是Class <! - 类型的数组?扩展MyType - >可能吗?

时间:2014-09-26 20:05:38

标签: java generics

我刚刚开始深入研究Java泛型,并遇到了令人费解的事情。我有一个Class对象列表。这些Class对象是扩展MyType类的类。我想做的是以下几点:

Class<? extends MyType>[] myArray = myList.toArray( Class<? extends MyType>[] );

现在我知道这不会奏效。但是如何创建这样的阵列呢?我的麻烦是我需要将此List作为Class数组传递给方法。我宁愿避免@SuppressWarnings并弄清楚它是否可能。

3 个答案:

答案 0 :(得分:1)

您可以按原样传递列表,但不能实例化。必须使用具体的类replacea实例化,然后将其分配给捕获的任何内容。

答案 1 :(得分:0)

由于myList的类型,你必须在这里提供你应该知道的具体类型。

答案 2 :(得分:0)

有规则&#34;不要使用泛型&#34;混乱阵列。 Java中有限制声明creation of arrays of parameterized types is not allowed。因此,您的问题的答案是,您无法创建任何泛型类型的数组。

UPD :考虑使用任何集合类型而不是数组。他们会工作得很好。  或者你可以(但最好不要这样做)使用非泛型元素数组,然后将它们转换为适当的类型,抑制警告。