写了一个public class Array<E>
里面一直都在用private E[] info 这样一个泛型数组操作
里面是用info = (E[]) new Object[INITIAL_CAPACITY]进行的初始化
请问在main方法运行的时候该如何确定泛型的真正类型,以及如何向info数组里添加元素呢?
比如要使info={1,2,3,4},main方法里该如何实现呢?

解决方案 »

  1.   

    Array<Integer> array = new Array<Integer>();
    这个不就行了?
      

  2.   

    首先Java中的泛型都是伪泛型,在编译期泛型会被进行类型擦除,jvm看到的.class文件中不会存在泛型的概念,用“ javap -c 类名”命令(dos界面命令)进行反编译在生成的文件会发现泛型信息进行了注释,java就会通过这些标记记录的注释信息确定泛型的真正类型,如果没有类型默认使用object,数组在java中是初始化之后内存固定,所以你应该把数组建成ArrayList数组 通过add方法添加元素
      

  3.   

    泛型在调用时需要自己确定下来public class Test4 { public static void main(String[] args) {
    Array<Integer> array = new Array<>();//调用的时候泛型是需要自己明确下来
    Integer[] arr = {1,2,3,4};
    array.setInfo(arr);
    System.out.println(Arrays.toString(array.getInfo()));

    }
    }class Array<E>{

    private E[] info;
    //info = (E[]) new Object[INITIAL_CAPACITY]; public E[] getInfo() {
    return info;
    } public void setInfo(E[] info) {
    this.info = info;
    }

    }