泛型数组的创建
- 可以声明带泛型的数组引用,但是不能直接创建带泛型的数组对象
- 可以通过java.lang.reflect.Array的newInstance(Class,int)创建T[]数组
1
- 泛型数组不能作为对象
- 数组下的列表的数据类型必须与数组一样
![]()
public class Demo01 {
public static void main(String[] args) {
//泛型数组
// = new ArrayList<String>[5];这是错的,泛型数组不能作为对象
ArrayList<String>[] arrList = new ArrayList[5];
ArrayList<String> list = new ArrayList<>();
//数组下的列表的类型必须与数组一直,不能改integer
ArrayList<String> intl = new ArrayList<>();
list.add("a");
list.add("b");
intl.add("1");
intl.add("2");
arrList[0] = list;
arrList[1] = intl;
String l = arrList[0].get(0);
for (ArrayList<String> strings : arrList) {
System.out.println(strings);
}
System.out.println(l);
System.out.println("-----------------------------------------------------------");
Demo02<String> A = new Demo02<>(String.class, 3);
A.put(0, "a");
A.put(1, "b");
A.put(2, "c");
System.out.println(A.get(2));
System.out.println(Arrays.toString(A.getArray()));
}
}
2
- 可以通过java.lang.reflect.Array的newInstance(Class,int)创建T[]数组
public class Demo02<T> {
private T[] Arr;
//构造器
public Demo02(Class<T> clz, int length){
//通过Array.newInstance创建泛型数组
Arr = (T[]) Array.newInstance(clz,length);
}
/**
* 填充数组
* @param index 标识
* @param item 值
*/
public void put (int index,T item){
Arr[index]=item;
}
public T get(int index){
return Arr[index];
}
public T[] getArray(){
return Arr;
}
}