1
wenhuacn 2011-12-05 13:56:51 +08:00
我只熟悉Java 的反射,就是在Java 这种静态语言中,通过SDK 提供的一些API,能够在运行时(而不是编译时),根据类的名称,获得类的属性和方法,并可以修改和调用,算是为静态语言提供了一些动态性吧。
作用很多,例如写一些framework 时,可以利用反射来调用框架使用者实现的代码(可以参考junit源代码)。 楼主的提问方式太像老师考学生,估计很少有人能能闲的给出全面的回答。 |
2
est 2011-12-05 14:10:04 +08:00
给你一个没有文档封装好的class,你能用代码一点一点发现它的内部结构和组织方式。这就是反射。
|
3
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来执行,从而学会新的行为 |
4
lldong 2011-12-05 14:50:34 +08:00
多数语言只提供structural reflection, 不过有些语言像smalltalk还提供了computational reflection。 http://en.wikipedia.org/wiki/Smalltalk#Reflection
|