V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
funcman
V2EX  ›  问与答

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

  •  
  •   funcman · 2011-12-05 13:32:41 +08:00 · 3993 次点击
    这是一个创建于 4728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    反射机制的起源?名称由来?初期概念?

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

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

    楼主的提问方式太像老师考学生,估计很少有人能能闲的给出全面的回答。
    est
        2
    est  
       2011-12-05 14:10:04 +08:00
    给你一个没有文档封装好的class,你能用代码一点一点发现它的内部结构和组织方式。这就是反射。
    Kymair
        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来执行,从而学会新的行为
    lldong
        4
    lldong  
       2011-12-05 14:50:34 +08:00
    多数语言只提供structural reflection, 不过有些语言像smalltalk还提供了computational reflection。 http://en.wikipedia.org/wiki/Smalltalk#Reflection
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:00 · PVG 12:00 · LAX 20:00 · JFK 23:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.