RTTI 的中文意思是“运行时类型识别”。在Java 中是通过Class 对象实现并且在使用“instanceof”操作符时也用到了RTTI。首先instanceof 操作符和Class对象有什么区别呢?instanceof 操作符用于判断对象的类型是否是指定的类型或其继承类,而Class需要通过isInstance 或isAssignableFrom 两个方法来判别,如果使用equals或着“==”操作符是无法判别两个类型的继承关系的。我想这也许就是这两个RTTI 最大的区别吧。
接着就要说说反射机制了,它与RTTI 有个最重要的区别:RTTI识别类型必须在编译时是已知的,而反射却不需要,它可以在程序运行时加载这个类型。Java 的反射机制主要是通过Java 的java.lang.reflect 包实现的。这里我不做RTTI和反射的深入研究。只是简单的介绍两个机制和两个机制间的区别。谢谢大家。