① java獲取泛型
這段代碼放在BaseDaoImpl中,在for循環中列印的t就是T和PK。
最後得到的persistType就是T的實際類型。
解釋一下紅色的部分:
因為this代表你的實例,
如果這個實例是(用Integer做ID的Student數據對象為例)
BaseDaoImpl<Student, Integer>studentDao=new BaseDaoImpl<Student, Integer>();
這個實例的「范型父類」(getGenericSuperclass)就是BaseDao<Student, Integer>,
如果你的實例是BaseDaoImpl<T, PK>子類的實例,
那麼「范型父類」就是BaseDaoImpl<T, PK>,
反正不是HibernateDaoSupport,因為HibernateDaoSupport不帶范型。
最後,不管是BaseDaoImpl,還是BaseDao,getActualTypeArguments()都得到Class數組,內容是{T的類型,PK的類型},取第一個(下標0),就得到T的類型(例中為Student.class)。
② java怎麼得到泛型的類型
泛型,就是廣泛的類型。剛開始要用到哪個都不會知道。只有去實例化對象的時候才能確定。泛型的參數只能是對象類型。
你這個程序,T entity-entity就是是一個泛型的引用,你可以在構造方法中為其具體賦值.
例如:
private T entity;
public HibernateDao(T entity)
{this.entity=entity;}
HibernateDao<Strng> h=new HibernateDao<String>("哈哈");
這時,泛型就代表一個String對象.值是哈哈.
在沒有泛型之前,這種形式一般都是先定義一個通用的Object obj.然後在構造方法中為其賦值.
③ java中 如何得到泛型參數的類型,並在另一個方法中使用
Java的泛型就是創建一個用類型作為參數的類。就象我們寫類的方法一樣,方法是這樣的method(String str1,String str2 ),方法中參數str1、str2的值是可變的。而泛型也是一樣的,定義泛型 一般用 T 表示. public <T> List<T> method(T t){ 方法體} 。它的參數 就是 T 一個類型,你傳什麼類型的對象,T就是什麼類型。
T將是 可變的類型。
④ Java獲取泛型對象中的某個屬性值
首先做一個介面,介面中聲明需要的取值方法
然後做你要的實際的類,每個類實現不同的取值方法
然後list通過介面進行定義,將每個實際類的對象insert到list中間
然後利用多態實現動態的方法綁定,實現你的需求