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!");
}
}