package com.tain_Test;
/*
* 案例演示
* public void setProperty(Object obj,String propertyName, Object value){}
* 此方法可以将obj对象中名为propertyName的属性的值设置为value
*
*/
public class Test2 {
public static void main(String[] args) throws Exception {
Student student = new Student("大毛",16);
System.out.println(student);
Tool t = new Tool();
t.setProperty(student, "name", "二毛");
t.setProperty(student, "age", 15);
System.out.println(student);
}
}
class Student{
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
package com.tain_Test;
import java.lang.reflect.Field;
public class Tool {
// * 此方法可以将obj对象中名为propertyName的属性的值设置为value
public void setProperty(Object obj,String propertyName, Object value) throws Exception{
Class clazz =obj.getClass(); //获取字节码对象
Field f = clazz.getDeclaredField(propertyName); //暴力反射获取字段
f.setAccessible(true); //去除权限
f.set(obj, value);
}
}
反射练习
最新推荐文章于 2024-07-21 21:49:34 发布