java - 在哪种情况下应该使用 toArray() 和 toArray(T[] a) 的重载版本?

标签 java collections casting

我从不使用重载版本的 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() 方法 - 返回一个对象数组,该数组不能转换为另一种类型的数组,因此会抛出异常:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

关于java - 在哪种情况下应该使用 toArray() 和 toArray(T[] a) 的重载版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30302033/

相关文章:

java - 并发集合大小计算

json - 在 Postgresql 中将文本类型列转换为 json 类型

c++ - 将整数重新解释为 float 是否安全?

java - ejp : how to save modified objects?

Java调用外部进程-exe

java - 我如何在服务器处理程序内打开新的客户端 channel 到其他地址

java - 将 map 转换为列表

java - 如何在 Kotlin 中组合 lambda

java - 如何在java中将数据集复制或转换为Arraylist?

Java Socket 编程与 TCP 不工作