1.运行时类型信息
1.运行时类型信息
Java在运行时识别对象和类的信息,主要有两种方式:一种是“传统的RTTI”,它假定我们在编译时已经知道了所有的类型;另一种是“反射机制”,它允许我们在运行时发现和使用累的信息。——摘自Java编程思想
RTTI的三种形式:
1.传统的类型转换,由RTTI确保转换的正确性
2.代表对象的Class对象,通过查询Class对象可以获取运行时所需的信息
3.使用关键字 isinstanceof: 它返回一个布尔值,来说明对象是不是某个类型的实例
2.Class对象
获取Class对象引用的方式:
1.可以用forName() 获取Class对象的引用
2.使用类字面常量 比如
Person.class
来获取Class对象的引用
上述两种获得Class对象引用方式的区别如下:
1.Class.forName() 获取Class引用会立即进行类初始化,而.class不会自动初始化该Class对象
2.Class.forName() 需要置于try catch语句中,而.class不需要,它在编译期间就会受到检查
Java中所有的类都是在对其第一次使用时,动态地加载到JVM中的。它分三个步骤:
1、加载:类加载器查找到字节码(.class文件)并根据这些字节码创建一个Class对象;
2、链接:验证类中的字节码,为静态域分配存储空间,需要的话同时解析这个类其它类的所有引用;
3、初始化:当类的静态方法(构造器是特殊的静态方法)或者非常数静态域(即不是编译器常量)被首次引用时,执行静态初始化块和初始化静态数据。
本篇简单介绍了Java的RTTI,下回细说Java反射机制。