gpt4 book ai didi

java - 将通用数组传递给构造函数

转载 作者:行者123 更新时间:2023-12-01 04:50:41 25 4
gpt4 key购买 nike

有没有办法将有界泛型类型的数组传递给具有相同泛型类型参数的方法,而不引发 ClassCastException?:

public class Heap<E extends Comparable>  implements java.lang.Cloneable{

private java.util.ArrayList<E> list = new java.util.ArrayList<E>();

public Heap(E[] objects) {
for (int i = 0; i < objects.length; i++) {
add(objects[i]);
}
}

private void add(E newObject){
...
}

@Override
protected Heap<E> clone() {
return new Heap<E>((E[])list.toArray());
}
}

最佳答案

约书亚·布洛赫 (Joshua Bloch) 的《Effective Java》(第 25 条):

It is illegal to create an array of a generic type, a parameterized type, or a type parameter. None of these array creation expressions are legal new List<E>[], new List<String>[], new E[].

因此使用列表而不是带有泛型的数组。

关于java - 将通用数组传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15018492/

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