Java Field.getType()返回一个Class对象

Java Field.getType()获取属性声明时类型对象,它标识了此Field对象所表示字段的声明类型。

定义

public Class<?>getType() 返回一个Class 对象,它标识了此 Field 对象所表示字段的声明类型。
返回:标识此对象所表示字段的声明类型的 Class 对象

例子

public class FieldSpy<T> extends BaseTestClass {
    public boolean[][] b = {{true, true}, {false, false}};
    public String name = "shixinzhang";
    public Integer integer = 23;
    public T type;
    public static final String CLASS_NAME = "net.sxkeji.shixinandroiddemo2.test.reflection.FieldSpy";
    public static void main(String[] args) {
        try {
            Class<?> aClass = Class.forName(CLASS_NAME);
            Field[] fields = aClass.getFields();
            for (Field field : fields) {
                printFormat("Field:%s \n",field.getName());
                printFormat("Type:\n  %s\n", field.getType().getCanonicalName());
                printFormat("GenericType:\n  %s\n", field.getGenericType().toString());
                printFormat("\n\n");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

运行结果:

Field:b         //二维的布尔值数组
Type:
  boolean[][]
GenericType:
  class [[Z

Field:name 
Type:
  java.lang.String
GenericType:
  class java.lang.String

Field:integer 
Type:
  java.lang.Integer
GenericType:
  class java.lang.Integer

Field:type         //泛型 T 类型,运行时被擦除为 Object
Type:
  java.lang.Object
GenericType:
  T

Field:CLASS_NAME 
Type:
  java.lang.String
GenericType:
  class java.lang.String


Process finished with exit code 0

总结

getType()返回的是Class对象,如果属性是一个泛型,从getType()只能得到这个属性的接口类型。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。