取得类中属性的泛型类型

来源:互联网 发布:it technician 编辑:程序博客网 时间:2024/06/11 08:06
class GGG {
    
private Map<String, Double> field;

    
public Map<String, Double> getField() {
        
return field;
    }

    
public void setField(Map<String, Double> field) {
        
this.field = field;
    }
}
    
public static void main(String[] args) throws Exception {
    GGG ggg 
= new GGG();
    Field field 
= ggg.getClass().getDeclaredField("field");
    field.setAccessible(
true);
    ParameterizedType pType 
= (ParameterizedType)field.getGenericType();
    System.out.println(
"ggg.field class type =" + pType);
    Type[] types 
= pType.getActualTypeArguments();
    
for(int i = 0; i < types.length; i ++) {
        System.out.println((i 
+ 1+ " =" + types[i]);
    }
    }

 输出结果:

ggg.field class type =java.util.Map<java.lang.String, java.lang.Double>
1 =class java.lang.String
2 =class java.lang.Double