主函数:传入字节码文件对象和创建出来的目标对象;
public class MyTest {
public static void main(String[] args) throws Exception {
Class<?> aClass = Class.forName("org.westos.demo7.Person");
Object obj = aClass.getDeclaredConstructor().newInstance();
//设置字段值;
MyUtils.setProperty(aClass, obj,"age", new Integer(23));
MyUtils.setProperty(aClass, obj, "name", "hehahha");
//获取字段值
Object name = MyUtils.getProperty(aClass,obj, "name");
System.out.println(name);
}
}
目标类:
public class Person {
private String name;
private Integer age;
public Person() {
}
}
工具类:
public class MyUtils {
//设置字段值;
public static void setProperty(Class aClass, Object obj, String propertyName, Object value) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException {
Field field = aClass.getDeclaredField(propertyName);
field.setAccessible(true);
field.set(obj,value);
}
//提供一个获取字段值的方法
public static Object getProperty(Class aClass, Object obj, String propertyName) throws NoSuchFieldException, IllegalAccessException {
Field field = aClass.getDeclaredField(propertyName);
field.setAccessible(true);
Object o = field.get(obj);
return o;
}
}
创建工具类设置字段值和获取字段值
最新推荐文章于 2022-05-15 22:02:05 发布