Java数据泛型正确的初始化方法
2016-04-05 20:44
661 查看
如果单单使用
或
那么当外部使用类调用 GenericArray[] rep = c.rep();时,
由于Java的类型擦除,运行期将出错,因为返回值数组类型为Object[]。
正确的方法如下所示:
T[] array; array = (T[]) new Object[10]; T[] rep() { return array; }
或
Object[] array; array = new Object[10]; T[] rep() { return (T[])array; }
那么当外部使用类调用 GenericArray[] rep = c.rep();时,
由于Java的类型擦除,运行期将出错,因为返回值数组类型为Object[]。
正确的方法如下所示:
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 T[] rep() { return array; } public static void main(String[] args) { GenericArrayWithTypeToken<Integer> array = new GenericArrayWithTypeToken<Integer>(Integer.class,100); //this is worked Integer[] rep = array.rep(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树