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之通过反射获取成员变量并使用
最新推荐文章于 2023-11-29 23:31:20 发布