gpt4 book ai didi

java - 为什么需要为Set.toArray指定一个数组,它返回一个数组?

转载 作者:行者123 更新时间:2023-12-02 07:38:30 25 4
gpt4 key购买 nike

我对 Set(和其他集合)中 toArray(T[]) 方法的设计和正确使用感到困惑。如果我有一组字符串,如果该方法无论如何都要分配一个新的字符串数组,为什么我需要指定一个大小为 0 的字符串数组?

Set<String> stringSet = new Set<String>();
// bla bla bla, insert Strings to set
String[] array = stringSet.toArray(new String[0]);

是否有更好的方法来获取数组而不分配额外的数组或显式类型转换?

最佳答案

该参数用于检测将要创建的数组的类型。

你可能会争论,为什么 JVM 不使用 stringSet 的泛型类型参数来检测类型。答案是,在运行时,由于类型删除,泛型类型参数是未知的,即 Set 在编译后变为 Set。

toArray(new Object[0]) 的功能与 toArray() 相同。

如果该集合适合指定的数组,则将其返回到其中。否则,将使用指定数组的运行时类型和该集合的大小分配一个新数组。

关于java - 为什么需要为Set.toArray指定一个数组,它返回一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11893649/

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