Java獲取泛型T的類型 T.class

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class Main{
    public static void main(String[] args)
    {
        Foo<String> foo = new Foo<String>(){};
        // 在類的外部這樣獲取
        Type type = ((ParameterizedType)foo.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        System.out.println(type);
        // 在類的內部這樣獲取
        System.out.println(foo.getTClass());
    }
}

abstract class Foo<T>{
    public Class<T> getTClass()
    {
        Class<T> tClass = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        return tClass;
    }
}
相關文章
相關標籤/搜索