为什么List <t> .toArray()返回通用Object []而不是T []?

时间:2017-04-12 06:56:30

标签: java generics collections

例如:

List<String> items = new ArrayList<String>();
String[] aItems = items.toArray(); // type error, because toArray() returns Object[]

我明白这就是它的方式,它无法改变。当然我可以将它转换为String [],但我想知道它背后的想法是什么?这是一个&#34; bug&#34;在Java中,还是有充分的理由呢?

1 个答案:

答案 0 :(得分:5)

灵活性。

不传递任何参数的toArray()方法返回Object[]

有一个很好的理由,现在你知道你期望哪种类型,并且方法的作者不知道由于类型擦除而在运行时返回哪种类型的数组。所以他们只是让它成为所有对象的超级类型Object,这就是它返回Object[]的原因

如果你想指定你的类型,它们很好,并返回你的特定类型:)

String[] aItems= items.toArray(new String[0]);