gpt4 book ai didi

java - 在java中使用泛型为集合到数组转换分配数组的必要性

转载 作者:行者123 更新时间:2023-12-01 17:19:21 26 4
gpt4 key购买 nike

为什么需要分配一个可以保存集合值的数组并将其传递给该集合的 toArray(T []) 方法?我知道有一个 toArray() 方法不需要预先分配的数组,但是这个方法返回 Object[] ,这绝对是糟糕的。我也想避免类型转换。

示例:

Set<String> strings = new HashSet<>();
// put some values in it
String[] stringArr = strings.toArray(/* preallocated array, why? */);

假设我使用泛型(无论如何,其他一切都是不好的做法),使用的集合类本身应该有足够的信息来为我完成这项工作。它可以做这样的事情:

public someCollection<T> {
...
public T[] toArray() {
T[] arr = new T[this.length];
// fill the array with the collection values
return arr;
}
}

问题在哪里,如果我没有弄错的话,这应该很容易在默认集合类中实现。

最佳答案

Java 泛型使用类型删除,这意味着类型参数仅存在于编译时

在运行时,代码不知道 T 是什么,因此无法创建new T[]

关于java - 在java中使用泛型为集合到数组转换分配数组的必要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860529/

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