`
步行者
  • 浏览: 167601 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

反射 与 自省

    博客分类:
  • JAVA
阅读更多

反射 与 自省 都是用来判断一个语言是否是动态语言 的标准

他们有区别吗?我感觉都一样。

 

下面是 它们 的定义(计算机编程中

反射(reflection)

可以在运行时获得对象的类型信息。 比如对于一个JAVA对象,它的类型信息包括

1,这个对象的所属的类(class)

2,这个类 的 构造器(constructor)

2,这个类 中 声明的方法(method)

3,这个类 中 声明的属性(field)

4,这个类 中 声明的注解(annotation)

5,这个类 的 父类(superclass)

6,这个类 实现的 接口(interface)

自省( introspection

检查某些事物以确定它是什么、它知道什么以及它能做什么。

 

对象 的 类型信息 就是描述 这个对象 是什么,知道什么,以及能做什么。

我感觉 反射 与 自省 其实是一回事, 只是在JAVA中把自省说成反射,在PYTHON中把反射说成自省。

不知道为什么一种事物会有两种说法。。。

 

附件里有一个关于java反射的教程(翻译自SUN官方教程),

分享一下。。。

 

分享到:
评论
6 楼 whatwhat 2009-07-17  
<div class="quote_title">unsid 写道</div>
<div class="quote_div">内省本来就是对反射的再次包装,它比反射具体一些,反射能用在内省里,也可以不用再内省里。这和面粉与面包的关系差不多。</div>
<p><br><br>能否给出java自省的官方定义</p>
<p> </p>
5 楼 unsid 2009-07-17  
内省本来就是对反射的再次包装,它比反射具体一些,反射能用在内省里,也可以不用再内省里。这和面粉与面包的关系差不多。
4 楼 步行者 2009-07-17  
<div class="quote_title">unsid 写道</div>
<div class="quote_div">自省就是内省,内省在反射包里,是利用反射实现的,内省可以算是对反射的扩充,二者不是一个概念。<br><br>内省主要说的,一个类该做哪些事情由这个类本身就决定了,而非外部调用者。<br><br>比如一个类只有get和set方法,那么明显这个类的主要任务就是封装数据,则把这个类传入对应内省构造器中,无须你在挨个set。<br><br>或者一个负责计算某些值,那你可以要求这个类所有计算方法必须以“compute”开头,则将这个类自动运行而无需关心该计算哪些。</div>
<p> </p>
<p><span style="color: #0000ff;">“内省可以算是对反射的扩充”,</span></p>
<p>请问扩充在哪里?</p>
<p> </p>
<p><span style="color: #0000ff;">“内省主要说的,一个类该做哪些事情由这个类本身就决定了,而非外部调用者。”</span></p>
<p>这也是通过反射实现的吧。。</p>
<p><br>你举的的两个例子很具体,但也都是通过反射实现的。<br></p>
<p> </p>
3 楼 unsid 2009-07-17  
自省就是内省,内省在反射包里,是利用反射实现的,内省可以算是对反射的扩充,二者不是一个概念。

内省主要说的,一个类该做哪些事情由这个类本身就决定了,而非外部调用者。

比如一个类只有get和set方法,那么明显这个类的主要任务就是封装数据,则把这个类传入对应内省构造器中,无须你在挨个set。

或者一个负责计算某些值,那你可以要求这个类所有计算方法必须以“compute”开头,则将这个类自动运行而无需关心该计算哪些。
2 楼 步行者 2009-07-16  
whatwhat 写道
java中只听说过反射
自省和反射应该是一回事吧


我感觉是一回事
希望有人能指出它们的不同
1 楼 whatwhat 2009-07-16  
java中只听说过反射
自省和反射应该是一回事吧

相关推荐

    Python面向对象之反射/自省机制实例分析

    本文实例讲述了Python面向对象之反射/自省机制。分享给大家供大家参考,具体如下: 反射:程序可以访问,检测和修改它本身状态或行为的一种能力(自省) 下面就介绍四种实现自省的函数,适用于类和对象 1. 判断...

    Python自省及反射原理实例详解

    Python中的自省与反射  由于Python是一门强类型的动态解释型语言,故我们在某些时候并不会知道(特别是与别人对接开发工作的时候)对象中具有的属性与方法。  这个时候我们并不能直接通过 .或者查看底层的 __dict...

    Java自省类教程

    reflection 是一系列的API,它用于表示或者处理当前JVM中的类,接口和对象。

    Python中的自省(反射)详解

    主要介绍了Python中的自省(反射)详解,本文讲解了通过访问对象的属性、访问对象的元数据、确定对象的类型等内容,需要的朋友可以参考下

    Python自省(反射)指南1

    本文第3节中介绍了inspect模块。如果模块没有文档,这个值是None。*__name__: 始终是定义时的模块名;即使你使用import .. as 为它取

    PHP反射机制原理与用法详解

    面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射。 反射,直观理解就是根据到达地找到出发地和来源。比如,一个光秃秃的对象,我们可以仅仅通过这个对象就能知道它所属的类、拥有哪些方法。 反射是...

    cppexpose:用于类型自省,反射和脚本编写接口的C ++库

    cppexpose是跨平台的C ++ 11库,提供用于自省类型,属性和类的工具。 cppexpose允许C ++程序将其接口公开给运行时,从而可以为接口创建自动GUI表示,或将其公开给脚本环境。 该实现基于标准的C ++模板,并且不使用...

    浅谈Python反射 & 单例模式

     – 反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)  面向对象中的反射  – 通过字符串的形式来操作(获取、检查、增加、删除)对象中的成员  – python中的一切事物都是对象(都可以...

    小结Python的反射机制

    反射的定义:检测和修改它本身状态或行为的一种能力(自省)。 而通过反射,Python可以通过字符串的映射或修改程序运行的状态和方法。 反射的四个方法。hasattr,getattr,setattr,delattr hasattr:判断一个方法...

    minimalcode-reflect:JavaBean 的简约反射和内省功能

    最小代码反射 JavaBean属性的低级反射和自省功能。 它支持字节码生成、注释和类型。

    框架中常用的jar包作用

    提供对Java 反射和自省API的包装. aspectjweaver.jar 用于在Spring 2.0中集成AspectJ AspectJ LTW织入器 ognl.jar OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression ...

    ssh常用工具jar包详解(很详细,有源码实例)

    提供对Java 反射和自省API的包装, 主要提供了对于 JavaBean进行各种操作。commons-digester.jar: 它能方便地将XML文档所定义的元素转化为JAVA对象,其实它的用法有点象栈(当然内在的原理就是那个古老的东西,只是...

    学习Java开源框架前你应该了解的

     一是Java的反射机制和自省机制。大部分框架都用到这两种机制,因为它们都要实现通过配置文件自动完成类的识别和加载,所以必须要使用反射和自省。尤其是自省机制,对于大家了解JSP中的一些知识也是很有帮助的。...

    sarras:通过Java应用程序的静态和动态分析为Graal基板VM反射配置文件生成器

    解析给定jar中所有类的字节码,自省反射调用(通过反射访问类/方法/字段等),并将其配置添加到生成的反射配置文件中。 动态剖析 作为Java代理附加到常规Java应用程序(不是来自本机映像),并拦截反射调用(还包括...

    国产编程语言R++ V1.5

    3.完整的反射和自省机制,解释器和R++代码几乎融为一体 4.字符串常量统一使用utf8(如果需要在控制台输出中文请参考rpp.pdf修改控制台的编码) 5.完整的模板函数支持,模板函数不仅可以作为类的成员,还可以动态生成...

    山寨语言R++ V1.71

    R++是专为懒人设计的山寨编程语言,支持无操作系统裸奔、编译成机器码、android、cocos2dx绑定、中文编程、闭包、Lisp的S表达式、内联汇编、伪代码、模板、宏、多重继承、元编程、反射、自省、指针、引用。

    Java开发常用jar包

    1.commons-beanutils.jar:提供对Java反射和自省API的包装,主要提供了对于 JavaBean进行各种操作。提供了对于JavaBean进行各种操作,克隆对象,属性等等. 2.commons-digester.jar:方便地将XML文档所定义的元素转化为...

Global site tag (gtag.js) - Google Analytics