一、反射概念
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在运行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。
通过下面的代码初步理解反射机制,通过这个大概理解反射机制,不需要每行代码都理解,下文会细讲。创建了一个Person类。
1 public class Person { 2 3 private String name; 4 public int age; 5 6 @Override 7 public String toString() { 8 return "Person{" + 9 "name='" + name + '\'' + 10 ", age=" + age + 11 '}'; 12 } 13 14 public String getName() { 15 return name; 16 } 17 18 public void setName(String name) { 19 this.name = name; 20 } 21 22 public int getAge() { 23 return age; 24 } 25 26 public void setAge(int age) { 27 this.age = age; 28 } 29 30 public Person(String name, int age) { 31 32 this.name = name; 33 this.age = age; 34 } 35 36 private Person(String name) { 37 this.name = name; 38 } 39 40 public Person() { 41 System.out.println("Person()"); 42 } 43 44 public void show(){ 45 System.out.println("你好,我是一个人"); 46 } 47 48 private String showNation(String nation){ 49 System.out.println("我的国籍是:" + nation); 50 return nation; 51 } 52 }