RTTI:Run-Time Type Information,关键词在 Run-Time,运行时的,而非编译期确定的关于类型的信息。运行时的类型信息(RunTime Type Information)使得可在程序运行时发现、识别和使用类型信息。

Java 在运行时识别对象和类的信息,主要包括以下两种方式:

  • “传统的”RTTI,假定我们在编译期即已知道所有的类型;
  • “反射”机制,允许在运行时发现和使用类的信息;

1. RTTI 与类型转换

在 Java 中,所有的类型转换都是在运行时进行正确性检查的,这也正是 RTTI(Run-Time Type Information)名字的含义:在运行时,识别一个对象的类型;

2. Class 对象

为了理解 RTTI 在 Java 中的工作原理,还必须知道类型信息在程序运行时是如何表示的。这项工作便是交由 Class 对象(特殊对象)完成,其包含了与类有关的信息。事实上,Class 对象便是用来创建类的所有常规对象的。

类是程序的一部分,每个类都有一个 Class 对象。换言之,每当编写并且编译了一个新类,就会产生一个 Class 对象(更具体地讲,便是保存在一个同名的 .class 文件中)。为了生成该类对象,运行该程序的 JVM 将使用被称为“类加载器”的子系统。

3. 类对象(Class object)

What does .class mean in Java?

类名后的 .class是对类对象(Class object)的引用,用以表示该类。如下代码:

Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());
  • Print.class:便是用以表示运行时(runtime)Print类的对象(object)

最新文章

  1. [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ
  2. *** missing separator. Stop.
  3. 【caffe】create_cifar10.sh在windows下解决方案
  4. Mysql 练习 总结
  5. html部分---通用标签与属性;
  6. AngularJS与RequireJS集成方案
  7. Swing做的非阻塞式仿飞秋聊天程序
  8. c# 读取其他程序的ListView内容
  9. oracle 大文本由clob来存
  10. 【USACO 1.1.3】黑色星期五
  11. Python中函数式使用
  12. IIS架构与HTTP请求处理流程
  13. 关于国产跨平台的开源游戏引擎LGame
  14. mavean的依赖传递和排除依赖
  15. SQL Server 数据库部分常用语句小结(一)
  16. Asp.Net Nuget常用命令
  17. HashSet源码
  18. ueditor保存出现 从客户端(Note="<p>12345</p>")中检测到有潜在危险的 Request.Form 值
  19. RobotFrameWork(十三)RobotFramework与loadrunner性能测试结合(基于Remote库)
  20. Qt 之 去除窗口部件被选中后的焦点虚线框

热门文章

  1. Codeforces Round #198 (Div. 2)A,B题解
  2. idea的环境变量设置(Enviroment variables)
  3. element-ui 分页中的slot的用法(自定义分页显示内容)
  4. c# winform 获取listview 选中行某列的值
  5. SqlServer数据库基本用法
  6. Android入门知识
  7. 三维点集拟合:平面拟合、RANSAC、ICP算法
  8. macOS 不用任何第三方工具 简单两步使用 Automator 将截图转成@1x
  9. Ubuntu Server 18.04 LTS 安装
  10. mysql 读写分离 ,mysql_proxy实现