【发布时间】:2015-01-11 06:34:59
【问题描述】:
List 有一个方法toArray 如:
<T> T[] java.util.ArrayList.toArray(T[] a)
在调用这个方法时,我应该创建一个新的实例并传递给它toArray(new MyElementClass[0])。
可以这样定义吗:
<T> T[] java.util.ArrayList.toArray(Class<T>)
拨打toArray(MyElementClass[].class),能不能更有效?
【问题讨论】:
-
可能是的,尽管您始终可以使用您需要的每种类型的零长度数组来保留许多常量。但这个问题是假设性的,因为您无法更改 API 类。
-
它必须是
Class<T>而不是Class<?>。 -
List 是接口,它没有名为“toArray”的方法。这个接口有一个叫做 ArrayList 的实现。只是为了不混淆其他人
-
如果是
<T> T[] toArray(Class<T>),那你就得叫它toArray(MyElementClass.class)
标签: java generics type-erasure