5

可能重复:
为什么 List<String>.toArray() 返回 Object[] 而不是 String[]?如何解决这个问题?

请参阅此代码示例:

    List<String> list = new ArrayList<String>();
    list.add("hello");
    list.add("world");
    Object [] array = list.toArray();

为什么该方法toArray()返回一个数组Object?其他List方法如get(),remove()能够返回列表中对象的类型。

4

5 回答 5

4
Because array has been in Java since the beginning, while generics
were only introduced in Java 5. And the List.toArray() method was 
introduced in Java 1.2, before generics existed, so it was
specified to return Object[].

你可以用toArray(T[] a)看看Collection.toArray(T[] a)

于 2012-06-13T04:47:45.457 回答
1

您可以使用toArray(String[] a)它将返回字符串类型的数组或基本上指定类型的数组。toArray 方法返回对象,因为它充当基于集合和基于列表的 API 之间的桥梁。

于 2012-06-13T03:59:24.180 回答
0

我相信返回 Object 是为了通用它很可能必须处理内存分配问题。系统不必知道您的确切类型即可分配对象数组。您不会使用 get 和 remove 遇到此问题,因为它只返回一项。

但我会支持你的问题,希望有人能确认我的回答或纠正我。

于 2012-06-13T03:57:23.137 回答
0

Java List#toArray解释了它。

于 2012-06-13T03:57:31.187 回答
0

toArray()必须构造新的数组对象并填充它。但是由于运行时泛型类型擦除 toArray()不知道元素的实际类型是什么。因为这会创建 Object ( Object[]) 的数组。<T> T[] toArray(T[] a)如果您想要类型化数组,请使用。

于 2012-06-13T04:05:46.353 回答