Java如何獲得泛型類的真實型別
阿新 • • 發佈:2019-01-23
public class RealType<T>{ private Class<T> clazz; // 使用反射技術得到T的真實型別 public Class getRealType(){ // 獲取當前new的物件的泛型的父類型別 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 獲取第一個型別引數的真實型別 this.clazz = (Class<T>) pt.getActualTypeArguments()[0]; return clazz; } }
用法簡單舉例
public class BaseDao<T>{ private Class<T> clazz; // 使用反射技術得到T的真實型別 public Class getRealType(){ // 獲取當前new的物件的泛型的父類型別 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 獲取第一個型別引數的真實型別 this.clazz = (Class<T>) pt.getActualTypeArguments()[0]; return clazz; } } class ClassB extends BaseDao<String>{ public static void main(String[] args) { ClassB classB = new ClassB(); Class realType = classB.getRealType(); System.out.println(realType.getName()); } }