记录一下遇见过的奇怪报错~
正确代码
public class Test<T> {
private T[] test;
private int size;
Test() {
size = 8;
test = (T[]) new Object[8];
}
public static void main(String[] args) {
Test t = new Test();
}
}
当泛型变量T没有继承Comparable的时候,使用如下方式初始化泛型数组是可行的:
test = (T[]) new Object[8];
错误代码
public class Test<T extends Comparable<T>> {
private T[] test;
private int size;
Test() {
size = 8;
test = (T[]) new Object[8];
}
public static void main(String[] args) {
Test t = new Test();
}
}
但如果我们想要对T的值进行比较,T extends Comparable的时候,再使用上述方法初始化就会报错:
在网上查了一下,可以用下面的方式初始化继承了Comparable的泛型数组
正确代码
public class Test<T extends Comparable<T>> {
private T[] test;
private int size;
Test() {
size = 8;
test = (T[]) new Comparable[8];
}
public static void main(String[] args) {
Test t = new Test();
}
}