<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; } }
Java数据泛型正确的初始化方法
最新推荐文章于 2024-07-31 04:33:27 发布