谁能用易懂而精准的语言解释下什么叫反射机制(Reflection),及其解决的问题?

2011-12-05 13:32:41 +08:00
 funcman
反射机制的起源?名称由来?初期概念?

反射机制的严格概念?举例几个语言上的例子加以说明。

反射机制能给我们带来什么?举例说明。
3881 次点击
所在节点    问与答
4 条回复
wenhuacn
2011-12-05 13:56:51 +08:00
我只熟悉Java 的反射,就是在Java 这种静态语言中,通过SDK 提供的一些API,能够在运行时(而不是编译时),根据类的名称,获得类的属性和方法,并可以修改和调用,算是为静态语言提供了一些动态性吧。
作用很多,例如写一些framework 时,可以利用反射来调用框架使用者实现的代码(可以参考junit源代码)。

楼主的提问方式太像老师考学生,估计很少有人能能闲的给出全面的回答。
est
2011-12-05 14:10:04 +08:00
给你一个没有文档封装好的class,你能用代码一点一点发现它的内部结构和组织方式。这就是反射。
Kymair
2011-12-05 14:27:16 +08:00
Wikipedia上的词条虽然还不算完善,但是应该能够解答楼主的大部分疑问了
http://en.wikipedia.org/wiki/Reflection_(computer_programming)

就个人感觉,反射赋予了程序极大的动态性,让程序可以更接近Homoiconicity,即Data is code (http://en.wikipedia.org/wiki/Homoiconicity)
如同人脑的学习机制一样,想学会编程,先通过内核基本模块载入编程的知识(data),然后能够把这段data当作code来执行,从而学会新的行为
lldong
2011-12-05 14:50:34 +08:00
多数语言只提供structural reflection, 不过有些语言像smalltalk还提供了computational reflection。 http://en.wikipedia.org/wiki/Smalltalk#Reflection

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/22838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX