Java RTTI(Run-Time Type Identification) 运行时类型识别
来源:互联网 发布:360网络电视直播 编辑:程序博客网 时间:2024/05/16 00:44
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反射机制。
阅读全文
0 0
- Java RTTI(Run-Time Type Identification) 运行时类型识别
- C++ Run-Time Type Identification(RTTI)运行时类型识别
- c++模拟MFC中运行时类型识别(RTTI)(Run-Time Type Identification)
- RTTI(Run-Time Type Identification,通过运行时类型识别)
- RTTI (Run-Time Type Identification,通过运行时类型识别)
- The C++ Standard Library: RTTI(Run-Time Type Identification,运行时类型识别)
- RTTI的魅力(运行时类型识别 Run-time type Identification)
- C++ RTTI(Run-Time Type Indentifiation,运行时刻类型识别)
- RTTI(Run-Time Type Identification)
- 行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制 多态 类加载
- RTTI(runtime type information Identification) 运行时类型识别
- RTTI(RunTime Type Identification,运行时类型识别)
- RTTI(Run-time Type Identification)
- RTTI运行阶段类型识别(Runtime Type Identification)
- MFC中的RTTI(Runtime Type Identification, 运行时类型识别)详解(参考《深入浅出MFC》)
- RTTI(Run-Time Type Information,通过运行时类型信息) 运行期类型检查
- [书摘]Issues about RTTI (Run Time Type Identification)
- ABAP RTTI(Run Time Type Identification)介绍与反射机制
- 贝尔实验室简介
- maven创建项目缺少 maven-resources-plugin-2.6.jar 包。
- < 笔记 > Git
- 二进制枚举子集与容斥
- 160. Intersection of Two Linked Lists
- Java RTTI(Run-Time Type Identification) 运行时类型识别
- 使用Maven构建javaWeb项目时,启动tomcat出错:严重: Error configuring application listener of class org.springframewo
- 详细记录 mac 系统下使用 chmod 命令修改文件权限
- ThinkPHP学习笔记—命名空间
- 欧拉图
- Netty源码分析:PoolChunkList
- < 笔记 > Git
- [NOIP模拟] 方盒子 费用流
- hihocoder 1258 Osu! Master