JAVA1.5 关于解决泛型当中无法获得class的问题

在讨论这个问题之前,首先大家达成共识,泛型当中是不是T.class是不存在的?答案是YES。

T.class是一个第一个想到,但是真是不存在的用法。

于是乎,聪明的你,在baidu和google上搜呀搜,看有没有解决的方案,你可能会遇到大部分的帖子,

用反射的方法获得T的class,我试过了,貌似不行。不置可否,我先把众人的反射方法贴出来:

http://stackoverflow.com/questions/4837190/java-generics-get-class

   
   
   
   
  1. Type genType = getClass(); System.out.println(genType);     
  2. Type[] params = (Type[])((ParameterizedType)genType).getActualTypeArguments(); 
  3.  Class entityClass = (Class) params[0]; 

当然,你可以继续搜,很多诸如此类的解决方案。

但是,我想说的是,是不是一定要用这个呢?

既然不能得到T.class,那就把类的class的传进方法里面吧,这种方法不见得有多么的笨拙。

反而挺优雅的。

 

   
   
   
   
  1. public class JSONHandler { 
  2.  
  3.      
  4.     private Class _entityClass; 
  5.      
  6.      
  7.     public JSONHandler(Class entityClass){ 
  8.          
  9.         this._entityClass=entityClass; 
  10.     } 

好,每次new一个实例的时候,都把Object.class穿进去,何乐而不为呢?

   
   
   
   
  1. JSONHandler weiboHandler=new JSONHandler(Weibo.class); 

(⊙v⊙)嗯,那就这样子先吧,终于解决了一个问题。