泛型数组

泛型数组的创建

  1. 可以声明带泛型的数组引用,但是不能直接创建带泛型的数组对象
  2. 可以通过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;
    }
}
posted @ 2022-03-04 15:18  小幼虫虫  阅读(489)  评论(0)    收藏  举报