反射的使用(1)

package work;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class demo04 {
    /*6.定义一个标准的JavaBean,名叫Person,包含属性name、age。
    使用反射的方式创建一个实例、调用构造函数初始化name、age,使用反射方式调用setName方法对名称进行设置,
    不使用setAge方法直接使用反射方式对age赋值。*/
    public static void main(String[] args) throws Exception {
        Class c = Class.forName("work.Person");
        Constructor con =c.getConstructor(String.class,int.class);
        Object obj =con.newInstance("刘继勋",20);
        System.out.println(obj);
        
    
        Field f =c.getField("age");
        f.set(obj,25);
        System.out.println(obj);
        
        Method m =c.getMethod("setName",String.class);
        
        m.invoke(obj,"liu");
        System.out.println(obj);
    }
}

 

package work;

public class Person {
    private String name;
    public  int age;
    public Person(){}
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public void eat(){
        System.out.println("吃饭");
    }
    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 "Person [name=" + name + ", age=" + age + "]";
    }
    public void run() { 
        System.out.println("welcome to oracle!"); 
    } 
}

 

posted @ 2018-07-02 11:54  淅沥沥丶下雨  阅读(120)  评论(0编辑  收藏  举报