Java数据泛型正确的初始化方法

来源:互联网 发布:历年网络购物用户规模 编辑:程序博客网 时间:2024/09/21 06:18
<pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; line-height: 22px; font-family: Monaco, Courier, monospace; color: rgb(56, 56, 56); font-size: 14px;"><span style="line-height: 1.57143em;">如果单单使用 T[] array;array = (T[]) new Object[10];T[] rep() {    return array;}或Object[] array;array = new Object[10];T[] rep() {    return (T[])array;     }那么当外部使用类调用 GenericArray<Integer>[] rep = c.rep();时,由于Java的类型擦除,运行期将出错,因为返回值数组类型为Object[]。正确的方法如下所示:</span><pre name="code" class="java">public class GenericArrayWithTypeToken<T> {    private T[] array;    public GenericArrayWithTypeToken(Class<T> type,int sz) {       array = (T[]) Array.newInstance(type,sz);    }    public void put(int index,T item) {        array[index] = item;    }    public T get(int index) {        return array[index];    }    public static void main(String[] args) {        GenericArrayWithTypeToken<Integer> array = new GenericArrayWithTypeToken<Integer>(Integer.class,100);        //this is worked        Integer[] rep = array.rep();    }    public T[] rep() {        return array;    }}




                                             
0 0
原创粉丝点击