Class 泛型獲取T的class


getClass().getGenericSuperclass()返回表示此 Class 所表示的實體(類、接口、基本類型或 void)的直接超類的 Type
然后將其轉換ParameterizedType。
getActualTypeArguments()返回表示此類型實際類型參數的 Type 對象的數組。
[0]就是這個數組中第一個了。
簡而言之就是獲得超類的泛型參數的實際類型。

public class GenericDAO<T> {
	private Class<T> entityClass;
	protected GenericDAO() {
		Type type = getClass().getGenericSuperclass();
		Type trueType = ((ParameterizedType) type).getActualTypeArguments()[0];
		this.entityClass = (Class<T>) trueType;
	}
}

子類

public class OptionManager extends GenericDAO<MSGC_OPTION> {
}

測試類

public class OracleTest {
	public static void main(String[] args) throws Exception {
		OptionManager manager = new OptionManager();
	}
}

 

這樣在你new OptionManager();以后超類里的entityClass就是子類那里的public class OptionManager extends GenericDAO<MSGC_OPTION> 里面的MSGC_OPTION所對應的class對象了..

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM