反射的使用(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!"); } }