学习心得体会_学习心得:Java为什么支持反射机制?

更新时间:2014-04-30    来源:心得体会    手机版     字体:

【www.bbyears.com--心得体会】

Java为什么能够支持Reflection?答案是Java运行时仍然拥有类型信息,它包含了这个类一切:它有哪些字段、哪些方法,各是何种保护级别等等,还有这个类依赖于哪些类。在Java中,类信息以对象的形式存放,这些对象是一种元对象,它们的类型就是Class。拥有了这些信息,无论是动态创建对象还是调用某些方法都是轻而易举的。在C++中,通过RTTI(运行时类型识别),我们也可以知道类的一些信息,但为什么C++中却没有Reflection,原因是类型信息不完整。RTTI这个名字本身就告诉我们,C++的类型信息是用来进行类型识别的,因此,它也不需要其它额外的信息。并不是C++无法做到这一点,而是C++不希望给用户增加额外的负担。有所得,必然有所失,因此,C++放弃了元对象。关于这一点,C++之父Bjarne Stroustrup在他的《C++语言的设计与演化》的14.2.8节中进行了深入的讨论。
        元对象是Java Reflection的物质基础,那它的精神基础又是什么呢?Java为什么要支持Reflection?经过上面的讨论,我们把这个问题再进一步,为什么Java要提供元对象?
        讨论这个问题,我们还要拉回到十年前,那时Java刚刚来到正式登上历史的舞台。Java实际上诞生在这之前的数年,那时候还叫Oak,环境所限使得这一划时代的杰作甫一出炉便被束之高阁。当Netscape掀起了为网络大戏的序幕,Java得以凤凰涅

本文来源:http://www.bbyears.com/fanwenwang/5991.html

热门标签

更多>>

本类排行