Java RTTI(Run-Time Type Identification) 运行时类型识别

本文介绍了Java中的运行时类型信息(RTTI)概念及其三种表现形式:类型转换、Class对象及isinstanceof关键字的使用。此外还讲解了如何获取Class对象以及类加载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.运行时类型信息

Java在运行时识别对象和类的信息,主要有两种方式:一种是“传统的RTTI”,它假定我们在编译时已经知道了所有的类型;另一种是“反射机制”,它允许我们在运行时发现和使用累的信息。——摘自Java编程思想

RTTI的三种形式:

1.传统的类型转换,由RTTI确保转换的正确性

2.代表对象的Class对象,通过查询Class对象可以获取运行时所需的信息

3.使用关键字 isinstanceof: 它返回一个布尔值,来说明对象是不是某个类型的实例

2.Class对象

Class对象包含了与类有关的信息,Java使用Class对象来执行其RTTI。每个类都有一个Class对象,每当编写并且编译了一个新类,就会产生一个Class对象(保存在同名的.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反射机制。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值