/**
* 测试泛型获取,泛型限定类是TreeSet
* @autor terry
* @date 2014年1月4日
* @version 1.0
* @param <T>
* @修改记录:
* @modify by:
* @date:
* @reason:
*/
class Generic<T> extends Base<TreeSet> {
public static void main(String[] args) {
Generic c = new Generic();
System.out.println(c.getGenericType(0));
}
}
class Base<T> {
public Class getGenericType(int index) {
// 获得带有泛型的父类
Type genType = getClass().getGenericSuperclass();
if (!(genType instanceof ParameterizedType)) {
return Object.class;
}
// 返回表示此类型实际类型参数的Type对象的数组
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if (index >= params.length || index < 0) {
throw new RuntimeException("Index outof bounds");
}
if (!(params[index] instanceof Class)) {
return Object.class;
}
return (Class) params[index];
}
}
代码运行结果
以上代码就是最基础的泛型反射,拿到了限定的类型以后,就可以通过反射实现对这个泛型类的任何操作。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于