gpt4 book ai didi

java - 我们应该为 object.toArray() 使用类型转换吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:34 24 4
gpt4 key购买 nike

String[] a = c.toArray(new String[0]);

首先:我需要在这里进行类型转换吗? (我认为我们应该这样写这有效吗?

第二:还有为什么要写new String[0]

最佳答案

通常只有在使用前泛型 Java 时才需要类型转换。如果您查看 Collection.toArray(T[]) 的文档你会看到它知道返回的数组类型与传入的数组类型相同。所以,你可以这样写:

List<String> list = new ArrayList<String>();
list.add("Foo");
String[] array = list.toArray(new String[0]);

你传入数组告诉集合你想要什么结果类型,这可能和集合中的类型不一样。例如,如果您有一个 List<OutputStream>你可能想把它转换成 Object[] , 一个 Stream[]ByteArrayOutputStream[] - 显然后者只有在每个元素实际上一个ByteArrayOutputStream时才有效.这也意味着,如果您已经有一个类型和大小正确的数组,则可以将内容复制到其中,而不是创建一个新数组。

这个答案的先前版本是不准确的,顺便说一下 - 如果您使用不带任何参数的重载,您总是得到一个 Object[]无法转换:

List<String> list = new ArrayList<String>();
list.add("Foo");

// toArray doesn't know the type of array to create
// due to type erasure
Object[] array = list.toArray();

// This cast will fail at execution time
String[] stringArray = (String[]) arrray;

编辑:我刚刚注意到 erdemoo 的回答中也提到了这一点,但在这里也没有坏处:)

关于java - 我们应该为 object.toArray() 使用类型转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com