数组与泛型不能很好的结合,通常你不能去实例化一个带有参数化类型的数组,也不能去创建一个泛型数组<br />
Peel<String> []peelss =new Peel<String>[2];//错误
T [] array=new T[3];//错误
我们后面也可不去指定类型,但这样虽然可以创建数组但我们不能进行添加操作,或只能添加null,但这样的数组有和意义呢?
public class ArrayOfGenerics {
public static void main(String[] args) {
Peel<String> []peels =new Peel[2];
System.out.println(peels[0]);
System.out.println(peels.length);
peels[0]=null;
peels[1]="ssss";//错误,不能添加
}
}
参数化数组本身类型
import java.util.Arrays;
class ClassParameter<T>{
public T[] f(T[] rag){
return rag;
}
}
public class ParameterizedArrayType {
public static void main(String[] args) {
Integer[]item={1,2,3};
Integer[] f = new ClassParameter<Integer>().f(item);
System.out.println(Arrays.toString(f));
}
}
非泛型数组和泛型数组的转化
public class ArrayOfGenerics {
public static void main(String[] args) {
List<String>[] ls;//创建了一个泛型数组的引用
List[] la=new List[10];//
ls=(List<String>[])la;//前非泛型数组转化为泛型数组
ls[0]=new ArrayList<String>();
System.out.println(Arrays.toString(ls));
//ls[1]=new ArrayList<Integer>();//不能添加String之外的类型
Object [] objects=ls;//变为Object类型数组
objects[1]=new ArrayList<Integer>();
System.out.println(Arrays.toString(ls));
List<BerylliumSphere> [] lists=(List<BerylliumSphere>[]) new List[10];
for (int i=0;i<3;i++){
lists[i]=new ArrayList<BerylliumSphere>();
}
System.out.println(Arrays.toString(lists));
}
}