浏览 8567 次
锁定老帖子 主题:反射 与 自省
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (9)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-14
最后修改:2009-06-19
反射 与 自省 都是用来判断一个语言是否是动态语言 的标准 他们有区别吗?我感觉都一样。
下面是 它们 的定义(计算机编程中) 反射(reflection) : 可以在运行时获得对象的类型信息。 比如对于一个JAVA对象,它的类型信息包括 1,这个对象的所属的类(class) 2,这个类 的 构造器(constructor) 2,这个类 中 声明的方法(method) 3,这个类 中 声明的属性(field) 4,这个类 中 声明的注解(annotation) 5,这个类 的 父类(superclass) 6,这个类 实现的 接口(interface) 自省( introspection ) : 检查某些事物以确定它是什么、它知道什么以及它能做什么。
对象 的 类型信息 就是描述 这个对象 是什么,知道什么,以及能做什么。 我感觉 反射 与 自省 其实是一回事, 只是在JAVA中把自省说成反射,在PYTHON中把反射说成自省。 不知道为什么一种事物会有两种说法。。。
附件里有一个关于java反射的教程(翻译自SUN官方教程), 分享一下。。。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-16
java中只听说过反射
自省和反射应该是一回事吧 |
|
返回顶楼 | |
发表时间:2009-07-16
whatwhat 写道 java中只听说过反射 自省和反射应该是一回事吧 我感觉是一回事 希望有人能指出它们的不同 |
|
返回顶楼 | |
发表时间:2009-07-17
自省就是内省,内省在反射包里,是利用反射实现的,内省可以算是对反射的扩充,二者不是一个概念。
内省主要说的,一个类该做哪些事情由这个类本身就决定了,而非外部调用者。 比如一个类只有get和set方法,那么明显这个类的主要任务就是封装数据,则把这个类传入对应内省构造器中,无须你在挨个set。 或者一个负责计算某些值,那你可以要求这个类所有计算方法必须以“compute”开头,则将这个类自动运行而无需关心该计算哪些。 |
|
返回顶楼 | |
发表时间:2009-07-17
unsid 写道
自省就是内省,内省在反射包里,是利用反射实现的,内省可以算是对反射的扩充,二者不是一个概念。
内省主要说的,一个类该做哪些事情由这个类本身就决定了,而非外部调用者。 比如一个类只有get和set方法,那么明显这个类的主要任务就是封装数据,则把这个类传入对应内省构造器中,无须你在挨个set。 或者一个负责计算某些值,那你可以要求这个类所有计算方法必须以“compute”开头,则将这个类自动运行而无需关心该计算哪些。
“内省可以算是对反射的扩充”, 请问扩充在哪里?
“内省主要说的,一个类该做哪些事情由这个类本身就决定了,而非外部调用者。” 这也是通过反射实现的吧。。
|
|
返回顶楼 | |
发表时间:2009-07-17
内省本来就是对反射的再次包装,它比反射具体一些,反射能用在内省里,也可以不用再内省里。这和面粉与面包的关系差不多。
|
|
返回顶楼 | |
发表时间:2009-07-17
最后修改:2009-07-17
unsid 写道
内省本来就是对反射的再次包装,它比反射具体一些,反射能用在内省里,也可以不用再内省里。这和面粉与面包的关系差不多。
|
|
返回顶楼 | |