JAVA中通过反射机制访问对象Field属性修饰符,类型,名称

JAVA中通过反射机制访问对象属性Field

  • 获取Field的属性修饰符
    getModifiers返回的是int类型数据,
    需要用Modifier类的toString方法转为对应的修饰符
  • 获取Field的属性类型:
    getType返回的是Class类型
    通过调用Class类型的getSimpleName方法来获取类型名
  • L获取Field的属性名称
    field.getName()
public class FieldTest01 {
    public static void main(String[] args) throws Exception{
        //获取整个类
        Class userClass = Class.forName("reflection.field.User");
        //获取类中所有的属性
        //getFields只会获取公开的(public)的属性,返回一个Field[]数组
        Field[] fields = userClass.getFields();
        //获取Field[]的长度
        System.out.println(fields.length);//1
        //取出这个Field
        System.out.println(fields[0]);//name

        //getDeclaredFields  获取所有类型的属性
        Field[] fields2 = userClass.getDeclaredFields();
        System.out.println(fields2.length);//4
        System.out.println("==========================");
        for (Field field : fields2){

            //获取Field的属性修饰符
            //getModifiers返回的是int类型数据,
            // 需要用Modifier类的toString方法转为对应的修饰符
            System.out.println(Modifier.toString(field.getModifiers()));

            //获取Field的属性类型:
            //getType返回的是Class类型
            Class fieldType = field.getType();
//            String typeName = fieldType.getName();
            String typeName = fieldType.getSimpleName();
            System.out.println(typeName);

            //获取Field的属性名称
            System.out.println(field.getName());
        }
    }
}
  • 创建User类供测试:
public class User {
    public String name = "zhangsan";
    protected int age = 20;
    double PI = 3.14;
    private float ID = 2.0F;
}

版权声明:本文为qq_42843172原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。