/** * 测试泛型获取,泛型限定类是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]; } }
代码运行结果
以上代码就是最基础的泛型反射,拿到了限定的类型以后,就可以通过反射实现对这个泛型类的任何操作。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于