package com.sanmao10;
public class test_value {
/**
* 反射(通过反射写一个通用的设置某个对象的某个属性为指定的值)
* A:案例演示
* public void setProperty(Object obj, String propertyName, Object value){}
* ,此方法可将obj对象中名为propertyName的属性的值设置为value。*/
public static void main(String[] args) throws Exception{
Student student=new Student("三毛");//Student{name='三毛'}
System.out.println(student);
tool t=new tool();
t.setProperty(student,"name","永超");//Student{name='永超'}
System.out.println(student);
}
}
class Student{
private String name;
public Student() {
}
public Student(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
}
package com.sanmao10;
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 field=clazz.getDeclaredField(propertyName); //暴力反射获取字段
field.setAccessible(true); //设置访问权限
field.set(obj,value); //设置值
}
}
反射(通过反射写一个通用的设置某个对象的某个属性为指定的值)
最新推荐文章于 2023-10-23 11:35:53 发布