您的位置:首页 > 其它

反射(通过反射写一个通用的设置某个对象的某个属性为指定的值)

2016-07-16 23:37 615 查看
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);   //设置值
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 string class