package cn.itcast_03;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
/*
* 通过反射获取成员变量并使用
*
*/
public class 通过反射获取成员变量并使用 {
public static void main(String[] args) throws Exception {
//获取字节码文件对象
Class c = Class.forName("cn.itcast_01.Person");
//获取公共的成员变量
//Field[] fields = c.getFields();
//获取所以的成员变量
// Field[] fields = c.getDeclaredFields();
// for(Field field :fields) {
// System.out.println(field);
// }
/*
* Person p = new Person();
* p.address = "北京";
* System.out.println(p);
*
*/
//通过无参构造方法创建对象
Constructor con = c.getConstructor();
Object obj = con.newInstance();
System.out.println(obj);
//获取单个的成员变量
//获取address并对其赋值
Field addressField = c.getField("address");
//public void set(Object obj,Object value)
//将指定对象变量上此Field对象表示的字段设置为指定的新值
addressField.set(obj,"北京");//给obj对象的addressField字段设置值为北京
System.out.println(obj);
//获取name并进行赋值
Field nameField = c.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(obj, "马大哈");
System.out.println(obj);
//获取age并进行赋值
Field ageField = c.getDeclaredField("age");
ageField.setAccessible(true);
ageField.set(obj, 24);
System.out.println(obj);
}
}
Java之通过反射获取成员变量并使用
最新推荐文章于 2024-08-18 08:00:00 发布
该博客主要介绍了如何使用Java反射API获取类的成员变量,并进行赋值操作。通过`Class.forName()`获取类对象,然后调用`getConstructor()`创建对象,接着使用`getField()`和`getDeclaredField()`获取成员变量,并通过`setAccessible(true)`允许访问私有变量,最后使用`set()`方法为对象的成员变量赋值。
335

被折叠的 条评论
为什么被折叠?



