反射_Class对象功能_获取Field

Field:成员变量

  操作:

    设置值

      void set(Object ob, Object value)

    
    获取值

      get(Object obj)

    忽略访问权限修饰符的安全的检查

 

举例:

  

public class Person {

    private String name;
    private int age;

    public String a;
    protected String b;
     String c;
    private String d;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", a='" + a + '\'' +
                ", b='" + b + '\'' +
                ", c='" + c + '\'' +
                ", d='" + d + '\'' +
                '}';
    }
 Class personClass = Person.class;

        Field[] fields = personClass.getFields();
        for (Field field : fields) {
            System.out.println(field);
        }
        System.out.println("===============");
        Field a = personClass.getField("a");
获取成员变量的a的值
Person person = new Person();
        Object value = a.get(person);
        System.out.println(value);
        //设置a的值
        a.set(person,"张三");
        System.out.println(person);

        System.out.println("================");

 

Field[] getDeclaredFields(); 获取所有的成员变量不考虑修饰符
 Field[] declaredFields = personClass.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            System.out.println(declaredField);
        }

        Field d = personClass.getDeclaredField("d");
        d.setAccessible(true);
        Object o = d.get(person);
        System.out.println(o);

 

 

 

 

 

 

 

反射_Class对象功能_获取Construct

constructor

  创建对象

    如果使用空参数构造方法创建对象,操作可以简化: class对象的newInstance方法

实现:

//获取Person的Class对象
        Class personClass = Person.class;
        //Constructor<T> getConstructor(类<?>... parameterTypes)
        Constructor constructor = personClass.getConstructor(String.class, int.class);
        System.out.println(constructor);
        //创建对象
        Object person = constructor.newInstance("张三", 23);
        System.out.println(person);

        System.out.println("------------");

        Constructor constructor1 = personClass.getConstructor();
        System.out.println(constructor1);

        Object person1 = constructor1.newInstance();
        System.out.println(person1);

        Object o = personClass.newInstance();
        System.out.println(o);

 

posted on 2022-07-22 11:02  淤泥不染  阅读(35)  评论(0编辑  收藏  举报