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 版权协议,转载请附上原文出处链接和本声明。