java之RTTI和反射的理解

最近在读 Thinking in Java 这本书。读到类型信息这一张时,刚开始对书中所说的RTTI和反射彻底混了,不知道有什么联系,有哪些相同点和区别。于是在网上又找了些内容辅助理解,这一章又重新读了一遍,对上面的这些疑问有了自己的答案,想到RTTI和反射时,脑海中有了自己的轮廓。

它俩的目的一样:

  在运行时,识别对象和类的信息。

相同点:

  目的相同;

  功能都是通过Class类来实现的

不同点:

  RTTI:(主要作用在多态中,比如参数传递) 它假定我们在编译时已经知道所有类型,会打开和检查所有.class文件。比如:在多态参数传递中,会打开和检查基类及派生类。     

  反射: .class在编译时不可获取,所以是在 运行时打开和检查.class文件。 

 名词解释:

  RTTI:Runtime Type Identification,运行时类型识别。

  Class:类的类;类类型;class type;比如一个对象Dog dog ,[Dog.class,dog.getClass(),Class.forName(Dog)]都是Class类型的对象。作用:之一吧,对象的类型信息在运行时是如何表示的,是通过Class的特殊对象。

原文地址:https://www.cnblogs.com/westward/p/5425186.html