package cn.java.vo;
/**
* 利用反射设置属性
*/
import java.lang.reflect.Field;
class Person {
public String name;
public int age;
}
class Student extends Person {
private String school;
}
public class TestFields {
public static void main(String[] args) throws Exception {
Class<?> cls = Class.forName("cn.java.vo.Student");
Object obj = cls.newInstance();
// 设置age
Field field = cls.getField("age");
field.set(obj, 18);
Object result = field.get(obj);
System.out.println(result);
// 设置school
Field field2 = cls.getDeclaredField("school");
field2.setAccessible(true); // 关键在设置为true,不然修改不了私有属性
field2.set(obj, "xi`an UOST");
System.out.println(field2.get(obj));
System.out.println("-------------------------");
{ // 普通代码块
// 第一组: 取得类中全部属性
Field[] fields = cls.getFields();
for (Field field1 : fields) {
System.out.println(field1);
}
}
System.out.println("-------------------------");
{
// 第二组:取得类中全部属性
Field[] fields = cls.getDeclaredFields();
for (Field field1 : fields) {
System.out.println(field1);
}
}
}
}
反射设置属性值(私有及公有)
最新推荐文章于 2023-08-03 18:03:34 发布