我从不使用toArray Object[] toArray(Object[] a)
的重载版本将集合转换为数组。
是我的javacode -
public class Track {
public static void main(String x[]) {
ArrayList<String> iName = new ArrayList<String>();
iName.add("Arpit1");
iName.add("Arpit2");
iName.add("Dubey1");
iName.add("Dubey2");
Object[] array= iName.toArray();
for(int i=0;i<array.length;i++)
System.out.println(array[i].getClass());
}
}
输出 -
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
预期 -
class java.lang.Object
还有一些与此相关的问题我经历了所有问题,但没有人指出我的问题。
答案 0 :(得分:3)
您需要使用重载方法来获取相应类型的数组。否则返回的数组将始终为Object[]
类型。
您的代码 - 使用不带参数的toArray()
方法 - 返回一个对象数组,该数组无法强制转换为另一种类型的数组,因此会引发异常:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
答案 1 :(得分:0)
在继续前进之前,无论您的toArray
方法的结果是什么,数组的元素将始终保持String
类型。
for(int i=0;i<array.length;i++)
System.out.println(array[i].getClass());
因此,这将始终返回class java.lang.String
。
如果您将元素存储在Object
中,则可能会将元素转换为Object[]
,但事实并非如此。数组只是容器。
话虽如此,toArray
的参数表示要构造的数组的类型。因此,您可以在Integer
数组中存储Number[]
的列表。