/**
* 书本:《Thinking In Java》
* 功能:泛型数组转化,传递一个类型标识
* 文件:GenericArrayWithTypeToken.java
* 时间:2015年4月19日10:05:43
* 作者:cutter_point
*/
package Lesson15_generices;
import java.lang.reflect.Array;
public class GenericArrayWithTypeToken<T>
{
private T[] array; //一个T类型的数组,实际在jvm中是Object类型的
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 (T)array[index];
}
//返回数组
public T[] rep()
{
return array;
}
public static void main(String[] args)
{
GenericArrayWithTypeToken<Integer> gai = new GenericArrayWithTypeToken<Integer>(Integer.class, 10); //传递进去一个类型参数,这样就可以从擦除中恢复
//放入1到10
for(int i = 0; i < 10; ++i)
gai.put(i, i);
for(int i = 0; i < 10; ++i)
System.out.print(gai.get(i) + " ");
System.out.println();
Integer[] ia = gai.rep();
System.out.println(ia);
}
}
输出:
0 1 2 3 4 5 6 7 8 9
[Ljava.lang.Integer;@4d4bb075
【ThinkingInJava】38、泛型数组转化,传递一个类型标识
原文地址:http://blog.csdn.net/cutter_point/article/details/45814867