クラス<T>ジェネリッククラスTを取得します

GET クラス().getGenericSuper クラスを()この返し  クラスAの  直接のスーパータイプエンティティ(クラス、インタフェース、プリミティブ型、またはvoid)を表し
、その後は、ParameterizedTypeを変換します。
getActualTypeArguments()このタイプのTypeオブジェクト実型引数の配列を返します。
[0]この配列の最初のものです。
一言で言えば、スーパークラスのジェネリックパラメータの実際の型を取得することです。

パブリッククラスGenericDAO <T> { 
	プライベートクラス<T> entityClass。
	保護GenericDAO(){ 
		タイプtype =のgetClass()getGenericSuperclass()。
		型TRUETYPE =((は、ParameterizedType)型).getActualTypeArguments()[0]; 
		this.entityClass =(クラス<T>)のTrueType。
	} 
}

サブクラス

パブリッククラスOptionManagerはGenericDAOを拡張<MSGC_OPTION> { 
}

テストカテゴリ

パブリッククラスOracleTest { 
	公共の静的な無効メイン(文字列[]引数)が例外{スロー
		OptionManagerマネージャ=新しいOptionManagerを(); 
	} 
}

 

だから新しいOptionManager();スーパークラス後のオブジェクトに対応するクラスは、パブリッククラスOptionManagerがMSGC_OPTIONの内側GenericDAO <MSGC_OPTION>を拡張entityClassのサブクラスです。..

  

おすすめ

転載: www.cnblogs.com/zhaoyanhaoBlog/p/11246354.html