在哪种情况下应该使用 toArray() 和 toArray(T[] a) 的重载版本?
In which condition which overloaded version of toArray() and toArray(T[] a) should be use?
我从不使用重载版本的 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
还有其他一些与此相关的问题,我已经全部解决了,但没有人指出我的查询。
您需要使用重载方法来获取适当类型的数组。否则返回的数组将始终为 Object[]
.
类型
您的代码 - 使用不带参数的 toArray()
方法 - returns 无法转换为另一种类型的数组的对象数组,因此会引发异常:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
在继续之前,无论您的 toArray
方法的结果如何,数组的元素将始终保持 String
.
类型
for(int i=0;i<array.length;i++)
System.out.println(array[i].getClass());
因此,这将始终 return class java.lang.String
。
如果将元素存储在 Object[]
中,您可能希望这些元素将转换为 Object
,但事实并非如此。数组只是容器。
也就是说,toArray
的参数表示要构造的数组的类型。因此,您可以将 Integer
的列表存储在 Number[]
数组中。
我从不使用重载版本的 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
还有其他一些与此相关的问题,我已经全部解决了,但没有人指出我的查询。
您需要使用重载方法来获取适当类型的数组。否则返回的数组将始终为 Object[]
.
您的代码 - 使用不带参数的 toArray()
方法 - returns 无法转换为另一种类型的数组的对象数组,因此会引发异常:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
在继续之前,无论您的 toArray
方法的结果如何,数组的元素将始终保持 String
.
for(int i=0;i<array.length;i++)
System.out.println(array[i].getClass());
因此,这将始终 return class java.lang.String
。
如果将元素存储在 Object[]
中,您可能希望这些元素将转换为 Object
,但事实并非如此。数组只是容器。
也就是说,toArray
的参数表示要构造的数组的类型。因此,您可以将 Integer
的列表存储在 Number[]
数组中。