1、引言
反射的重点在于这个“反”字,理解反射,重点要在于这个“反”的含义。既然是“反”,那么一定是与通常不一致的情况。那我们首先来看下正常情况下,Java程序从编写到运行的一个过程。
在Java中,万物皆是类。开发人员在编写Java代码时,就是一个创建并编写大量Java类的过程。Java程序运行时,ClassLoader就会将所有用到的Java类加载到JVM虚拟机中。如下是一个简单的Java示例代码,代码中定义了一个Person类,以及一个包含main函数作为程序入口的Main类 。在main函数里面,代码引用了Person类。
class Person {
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Main {
public static void main(String[] args) {
Person person = new Person("Joy");
System.out.println(person.getName());
}
}
这个小程序,从开发者层面来看,在开发这段小程序时,开发人员一定是知道main程序中依赖的Person类的详细信息,包括Person类的属性、方法等,所以开发人员可以在main函数中明确的使用Person这个类。<