Discuss / Java / 利用反射给字段赋值

利用反射给字段赋值

Topic source
public class Main {
       public static void main(String[] args) throws Exception {
              String name = "Xiao Ming";
              int age = 20;
              Person p = new Person();
              // TODO: 利用反射给name和age字段赋值:
              Class c = p.getClass();
              Field f1 = c.getDeclaredField("name");
              Field f2 = c.getDeclaredField("age");
              f1.setAccessible(true);
              f1.set(p,name);
              f2.setAccessible(true);
              f2.set(p,age);
              System.out.println(p.getName()); // "Xiao Ming"
              System.out.println(p.getAge()); // 20
       }
}
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;
       }
}



  • 1

Reply