posts - 397,comments - 0,views - 25332

反射_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   淤泥不染  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示