class Person {
private String name;
private int age;
public Person (String name){
this.name = name;
}
public Person (String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
private void setName(String name){
this.name = name;
}
}
Person p = new Person("Xiao Ming");
System.out.println(p.getName());
Class c = p.getClass();
//动态更新私有字段
Field f = c.getDeclaredField("name");
f.setAccessible(true);
f.set(p, "new name xxxj");
System.out.println(p.getName());
// 动态调用私有方法
Method m = c.getDeclaredMethod("setName", String.class);
m.setAccessible(true);
m.invoke(p, "setName called");
System.out.println(p.getName());
//动态调用构造方法
Constructor cons1 = c.getConstructor(String.class);
Person person2 = (Person) cons1.newInstance("name2");
System.out.println(person2.getName());
Constructor cons2 = c.getConstructor(String.class, int.class);
Person person3 = (Person) cons2.newInstance("name3", 123);
System.out.println(person3.getName());
System.out.println(person3.getAge());
余建材