/*
成员变量的相关方法
Field:成员变量
* 操作:
1. 设置值
* void set(Object obj, Object value)
2. 获取值
* get(Object obj)
3. 忽略访问权限修饰符的安全检查
* setAccessible(true):暴力反射
*/
public class DemoFiled {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
final Class<Person> personClass = Person.class;
final Field[] fields = personClass.getFields();//getFields()只能获取为public修饰的成员变量
for (Field field : fields) {
System.out.println(field);//public java.lang.String cn.icast.day23.Reflection.Person.a
}
//获取指定的成员变量
Field a = personClass.getField("a");
Person p = new Person();
a.set(p,"迪丽热巴");
Object o = a.get(p);
System.out.println(o);//获取值,或者设定值都需要传入对象
Field[] declaredFields = personClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
System.out.println(declaredField);
}
//访问私有化成员变量的方法:调用setAvailable
Field name = personClass.getDeclaredField("name");
name.setAccessible(true);
Object o1 = name.get(p);
System.out.println(o1);
}
}
反射03
最新推荐文章于 2022-09-11 18:48:18 发布
这篇博客探讨了Java反射API的使用,特别是如何通过`Field`类来访问和修改对象的成员变量,包括公共和私有字段。示例中展示了如何利用`setAccessible(true)`来绕过访问权限检查,访问私有成员变量。
摘要由CSDN通过智能技术生成