黑马程序员技术交流社区
标题:
反射的问题
[打印本页]
作者:
官珺伟
时间:
2014-3-20 11:35
标题:
反射的问题
本帖最后由 官珺伟 于 2014-3-21 06:35 编辑
这个方法,想要看到打印结果,该如何做?
import java.lang.reflect.Field;
public class Test1 {
/**
* 1、 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.
public void setProperty(Object obj, String propertyName, Object value){
}
*/
public void setProperty(Object obj, String propertyName, Object value){
try {
Class c = obj.getClass();
Field f = c.getDeclaredField(propertyName);
f.setAccessible(true);
f.set(obj, value);
} catch (Exception e) {
throw new RuntimeException("set property error", e);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
复制代码
作者:
赵卓辉
时间:
2014-3-20 11:55
package com.itheima;
import java.lang.reflect.Field;
class Person1{
private String name;
private int 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;
}
public Person1(String name, int age) {
super();
this.name = name;
this.age = age;
}
//重写toString方法
@Override
public String toString() {
return "Person1 [name=" + name + ", age=" + age + "]";
}
}
public class Test1 {
public static void main(String args[]){
//创建一个对象
Person1 p=new Person1("zhangsan",23);
System.out.println(p.toString());
//调用setProperty方法
setProperty(p,"age",18);
System.out.println(p.toString());
}
/*此方法可将obj对象中名为propertyName的属性的值设置为value.
* */
public static void setProperty(Object obj, String propertyName, Object value){
//Field[] declaredFields = obj.getClass().getDeclaredFields(propertyName);
try {
//通过反射获得相应字段
Field field=obj.getClass().getDeclaredField(propertyName);
//设置暴力反射
field.setAccessible(true);
//设置字段值
field.set(obj, value);
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2