为什么List.toArray()返回一个Object数组?

时间:2012-06-13 03:53:54

标签: java collections

  

可能重复:
  why does List<String>.toArray() return Object[] and not String[]? how to work around this?

请参阅此代码示例:

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

为什么方法toArray()会返回Object的数组?其他List方法(例如get()remove())可以返回列表中的对象类型。

5 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

但我会提出你的问题,希望有人可以确认我的答案或纠正我。

答案 3 :(得分:0)

Java List#toArray解释了它。

答案 4 :(得分:0)

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