被虚拟机加载的Java类的类信息放在方法区中;在类被加载进内存后,还会在方法区中(HotSpot虚拟机)生成一个Class类对象,该对象作为方法区这个类的各种数据的访问入口。一个类对应着一个Class对象。例如,加载了Worker和Car两个类,内存中就会像下图呈现的这样:
与类关联的Class类对象是使用Java反射机制的基础。有三种获得Class对象的方法,下面分别介绍。
假设在testreflection包里有Person类:
package testreflection;
public class Person {
}
方法一:
Person person = new Person();
Class class1 = person.getClass();
方法二:
String className = "testreflection.Person";
Class class2 = Class.forName(className);
方法三:
Class class3 = Person.class;