小知了
一个不神奇的博客
RTTI与反射的区别?
2017-01-26 15:59:06   阅读368次

运行时类型信息使得我们可以在程序运行时候发现和使用类的信息。

Java让我们在运行时识别对象和类的信息。主要有两种方式:

1 传统的RTTI(运行时类型信息),他假定我们在编译时候已经知道了所有的类型。(运行时程序使用基类指针或者引用检查这些指针或引用指向的对象实际派生类型)。RTTI和面向对象的三大概念密不可分。封装,继承,多态。因为有了封装才有了对象,因为有了继承才有了多态。

2 基于反射机制(内省):运行时的类信息。

区别:对于RTTI来说,编译器在编译时候打开和检查.class文件,可以通过"普通"方式调用对象的所有方法

对于反射来说,.class文件在编译时候是不可以获取的,所以在运行时候打开和检查.class文件。

共同点:都是在运行时候发现类的信息的。


RTTI我的理解是:只有在真正运行时候,才知道哪个对象调用了这个方法。后期绑定也叫动态绑定(运行时绑定)。(绑定:运行时候判断所引用类型的实际类型。)静态绑定是编译时候就知道了谁调用了谁。多态也可以理解为运行时绑定。他提供了所有基类引用子类的前提。也就是里氏替换:所有引用基类的地方必须能透明的引用子类

而反射就是在运行时候获取类的信息....





-----------------------------------------------------
转载请注明来源此处
原地址:#

-----网友评论----
暂无评论
-----发表评论----
微网聚博客乐园 ©2014 blog.mn886.net 鲁ICP备14012923号   网站导航