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のサブクラスです。..