JAVA1.5 關於解決泛型<T>當中無法獲得class的問題

JAVA1.5 關於解決泛型<T>當中無法獲得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<T> entityClass = (Class<T>) params[0]; 

當然,你可以繼續搜,很多諸如此類的解決方案。

但是,我想說的是,是不是一定要用這個呢?

既然不能得到T.class,那就把類的class的傳進方法裏面吧,這種方法不見得有多麼的笨拙。

反而挺優雅的。

 

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

好,每次new一個實例的時候,都把Object.class穿進去,何樂而不爲呢?

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

(⊙v⊙)嗯,那就這樣子先吧,終於解決了一個問題。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章