Java 通过反射来获取对象的成员变量和其值的例子


/**
 * @author peter
 * 2018/9/4 19:04
 */
public class Reflect {
    private String name;
    private int age;
    private String cupSize;

    public Reflect(String name, int age, String cupSize) {
        this.name = name;
        this.age = age;
        this.cupSize = cupSize;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }
}

测试

import java.lang.reflect.Field;
import java.util.Arrays;

/**
 * @author peter
 * 2018/9/4 19:11
 */
public class ReflectTest {
    public static void main(String[] args) {
        Reflect reflectTest = new Reflect("lucy", 18, "F");
        Class<? extends Reflect> rtClass = reflectTest.getClass();
        Field[] fields = rtClass.getDeclaredFields();//获取所有属性
        Arrays.stream(fields).forEach(field -> {
            //获取是否可访问
            boolean flag = field.isAccessible();
            try {
                //设置该属性总是可访问
                field.setAccessible(true);
                System.out.println("成员变量"+field.getName()+"的值为:"+field.get(reflectTest));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
           //还原可访问权限
           field.setAccessible(flag);

        });
    }
}

打印的结果:

成员变量name的值为:lucy
成员变量age的值为:18
成员变量cupSize的值为:F

版权声明:本文为wanping321原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>