前言
Java的反射——Class对象
一、Class对象
1.在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识(RTTI)。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。保存这些信息的类被称为Class,可以通过专门的Java类访问这些信息。
2.Class类的实例表示正在运行的Java应用程序中的类和接口。其中枚举是一种特殊的类,注释是一种特殊的接口。每个数组属于被映射为Class对象的一个类,所有具有相同元素类型和维数的数组都共享该Class对象基本的Java类型(boolean、byte、char、short、int、long、float和double)和关键字void也表示为Class对象。
3.Class对象就是用来创建类的所有的"常规"对象的。每个类都有一个Class对象,每当编写一个并且编译了一个新类,就会产生一个 Class对象(保存在体同名的 .class 文件中)。
4.Class没有公共构造方法。Class对象是在加载类时由Java 虚拟机以及通过调用类加载器中的defineClass方法自动构造的。
二、获取class对象的三种方法
1.类引用.getClass();
代码如下(示例):
Person person=new Person();
Class clazz=person.getClass();
2.Class.forName(“类的路径”);
代码如下(示例):
通过这个方法会有找不到该路径的异常,所以在使用时需要捕获异常。
String name="chapter3_8.step1.Person";
Class clazz=null;
try {
clazz=Class.forName(name);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
3.类名.class
Class clazz=Person.class;
通过这三种方法都可以达到获取类反射的class对象信息。
总结
Class对象能做什么?
Class 类存放类的结构信息,能够通过 Class 对象的方法取出相应信息:类的名字、属性、方法、构造方法、父类、接口和注解等信息。
在使用中常使用类.class,这个方法相较于另外两个比较方便。