Javaソース解析TypeとType Varableインターフェース

2808 ワード

  • Typeインターフェースには方法がありません。一つのインターフェースステートメント
  • だけです。
    //Type   java                ,        、     、    、         。
    public interface Type
    すべての既知の実装クラスは、GeneraicArayType、Parameterized Type、Type Varable、WildcardTypeがあります。
  • Type Varableは、様々なタイプの変数の共通上位インターフェース
  • である。
    //                
    public interface TypeVariable<D extends GenericDeclaration> extends Type
    タイプ変数には、このタイプの変数の境界を示すTypeオブジェクトの配列を返します。getGeneraniDeclaration:GeneraicDeclarationオブジェクトに戻り、このタイプの変数を宣言する一般的な声明を表します。このタイプの変数の名前を返します。ソースコードに表示されます。
    例は以下の通りです
    package reflect;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Type;
    import java.lang.reflect.TypeVariable;
    
    import org.jaxen.expr.NumberExpr;
    
    public class ConstructorTest<T extends CharSequence> {
    
        public static void main(String[] args) {
            TypeVariable>[] t = ConstructorTest.class.getTypeParameters();
            for(TypeVariable> m : t) {
                /**
                 *                ,    T
                 */
                System.out.println(m.getName());
                /**
                 *           ,       (extends),   Object;              ,
                 *      &      (                ,     extends     ,
                 *         ,    &      )
                 * 
                 */
                Type[] bounds = m.getBounds();
                for(Type t1 : bounds) {
                    System.out.println(t1);
                }
                /**
                 *                 
                 *   :class reflect.ConstructorTest
                 */
                System.out.println(m.getGenericDeclaration());
            }
        }
    }