`
步行者
  • 浏览: 170142 次
  • 性别: 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中只听说过反射
自省和反射应该是一回事吧

相关推荐

    Java自省类教程

    2. **元数据操作**:在数据库操作框架如Hibernate中,通过反射读取和设置对象属性,实现对象与数据库表的映射。 3. **动态代理**:Java的动态代理机制允许我们在运行时创建代理类,实现接口并动态调用其方法。 4. **...

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

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

    Java 自省类教程.rar

    8. **自省与Java注解**: - Java注解提供元数据,而反射可以用来读取这些元数据,实现代码的自动化处理或验证。 9. **反射与泛型**: - 尽管Java的泛型在编译后会被擦除,但反射仍可以获取到关于泛型的一些信息,...

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

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

    Python自省(反射)指南1

    Python的自省(反射)能力是指程序在运行时能够获取并操作对象的内部信息,包括对象的属性、方法、类型等。这对于编写高度动态和灵活的代码尤其有用。本文主要介绍如何利用Python的内置模块`inspect`来实现自省。 `...

    Python中的自省(反射)详解

    在Python中,自省(也称为反射)是一种强大的特性,它允许程序在运行时检查和修改自身的结构与行为。这种能力对于创建灵活和可扩展的应用程序尤其有用。本文将深入探讨Python中的自省功能,并通过实际例子来说明如何...

    java反射机制学习笔记+反射机制实操案例

    3. 反射与JVM的自省机制: 反射机制是Java虚拟机(JVM)的自省能力体现,它允许程序在运行时检查自身的结构和行为,就如同一个人能够了解自己的身体状况和能力。这种自省能力使得Java程序在运行时可以动态地发现和...

    flash反射实例

    6. **自省(Introspection)**:通过反射,开发者可以实现自省,即程序能够了解自身的结构和行为,这有助于编写更加灵活和适应性强的代码。 压缩包中的"flash反射实例"很可能是包含了一些AS3.0代码文件,通过这些...

    Java反射机制

    开发者可以通过反射实现插件化、元编程、自省(self-inspection)等功能。 理解并熟练掌握Java反射机制,对于提升Java开发的灵活性和解决复杂问题的能力大有裨益。不过,使用反射时应谨慎,避免引入不必要的复杂性...

    Java中的反射

    Java中的反射功能允许运行中的程序对自身进行检查,并能直接操作程序的内部属性,即所谓的“自省”能力。这是Java区别于其他编程语言如Pascal、C或C++的一个重要特性,因为在这些语言中无法直接获取函数定义等信息。...

    C++反射机制

    #### 引言:C++与反射机制 在现代软件开发领域,反射机制(Reflection)作为一种强大的编程技术,被广泛应用于多种编程语言中,如C#、Java等。它允许程序在运行时检查和修改自身结构与行为,提供了高度的灵活性和...

    Java反射机制测试Demo

    总结来说,Java反射机制提供了一种强大的手段,让我们可以在运行时动态地获取类的信息并操作对象,这对于实现元编程、插件化、代码自省等高级功能具有重要作用。在学习和使用时,我们需要理解其原理,合理运用,避免...

    C#反射实例

    这个特性使得程序更加灵活,能够实现元编程和自省的功能。以下是对C#反射的详细解释,以及如何通过实例来理解和应用它。 1. 反射基本概念: 反射是.NET框架的核心组成部分,它提供了对程序集、类型、成员(如方法...

    OOExample继承多接口反射在多态时的比较(VB.net)

    反射对于实现元编程和自省等高级功能非常有用,但同时也可能带来性能开销。 4. 多态:多态是面向对象编程的另一关键特性,允许不同类型的对象对同一消息做出不同的响应。在VB.NET中,多态主要通过继承和接口实现。...

    java反射&权限控制.pdf

    这一概念最早由Smith在1982年提出,核心思想是程序能够自省,即在运行时可以访问、检测和修改自身的状态和行为。 在Java中,反射机制允许开发者在程序运行时动态地加载和使用未知的类,这大大增加了程序的灵活性。...

    libbivalvia:缺少语言功能和高级功能的bash库

    反射与自省 `introspection`标签可能意味着库提供了自我检查的工具,让脚本能够了解自身的状态和行为。 ### 11. 字符串操作 `string-manipulation`标签提示我们,`libbivalvia`集成了丰富的字符串处理函数,如...

    Java的反射机制

    总的来说,Java反射机制为Java语言的动态性和自省能力提供了技术基础,使得开发者能够在运行时操作类和对象的属性、方法等,极大地增强了程序设计的灵活性。然而,这种灵活性也应被合理使用,避免过度依赖反射带来的...

Global site tag (gtag.js) - Google Analytics