通过反射获取泛型的class

通过继承可以获取,但是要求继承的类中的泛型是明确的,也就是不能是T,可以是String等,否则用下面方式会有异常


都知道通过反射可以直接创建对象的实例,但我们需要得到对象的class。但如果对象是一个泛型,如何获得T.class呢?

有一个比较流行的方法如下:

 

Java代码   收藏代码
  1. public class Test<T> {  
  2.     public T newInstance(){  
  3.         T instance=null;  
  4.         Class<T> entityClass = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];  
  5. //      ……  
  6.         return instance;  
  7.     };  
  8. }  

 

如果有多个泛型呢?

 

Java代码   收藏代码
  1. public class Test<PK,T> {  
  2.     public T newInstance(){  
  3.         T instance=null;  
  4.         Class<T> entityClass = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[1];  
  5. //      ……  
  6.         return instance;  
  7.     };  

http://my249645546.iteye.com/blog/1754820

你可能感兴趣的:(通过反射获取泛型的class)