1、定义一个标准的JavaBean,名叫Person,包含属性name、age。使用反射的方式创建一个实例、调用构造函数初始化name、age,使用反射方式调用setName方法对名称进行设置,不使用setAge方法直接使用反射方式对age赋值。2、写一个方法,public void setProperty(Object obj, String propertyName, Object value){},此方法可将obj对象中名为propertyName的属性的值设置为value。

解决方案 »

  1.   


    import java.lang.reflect.*;
    public class Person {
    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;
    }
    Person(){
    name="";
    age=0;
    }
    public static void main(String[] arg){
    String name="fish";
    int age=20;
    Person p;
    Class<?> c;
    try {
    c = Class.forName("Person");
    p=(Person) c.newInstance();
    Method[] method=c.getMethods();
    for(Method m:method){
    if(m.toString().equals("setName"))m.invoke(p, name);
    if(m.toString().equals("setAge"))m.invoke(p, age);
    }
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    e.printStackTrace();
    } catch (InstantiationException e) {
    e.printStackTrace();
    }
    }
    }