zoukankan      html  css  js  c++  java
  • 项目总结——传说中的反射居然是这个样子

           这阵子项目结束之后,大家開始了总结。关于在项目中用到的各种知识,如AOP。CAS,SSO,多线程,分布式缓存。反射,WCF。框架。建库切库等等。

    尽管有的知识了解的不是非常深,可是大致上都有了一个认识。那么今天。就让我们来谈谈传说中的反射。

    1、是什么

    (1).NET中的反射机制

           反射(Reflection)是.NET中的重要机制,通过反射,能够在执行时获得.NET中每个类型(包含类、结构、托付、接口和枚举等)的成员,包含方法、属性、事件,以及构造函数等。

    还能够获得每个成员的名称、限定符和參数等。有了反射,就可以对每个类型了如指掌。假设获得了构造函数的信息,就可以直接创建对象,即使这个对象的类型在编译时还不知道。

    (2)Java中的反射机制

           JAVA反射机制是在执行状态中。对于随意一个类。都能够知道这个类的全部属性和方法;对于随意一个对象,都能够调用它的随意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

           JAVA反射(放射)机制:“程序执行时,同意改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python。Ruby是动态语言。C++,Java,C#不是动态语言。可是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们能够于执行时载入、探知、使用编译期间全然未知的classes。

    换句话说。Java程序能够载入一个执行时才得知名称的class。获悉其完整构造(但不包含methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。

    (3)究竟是什么

           反射是指一类应用,它们能够自描写叙述和自控制。也就是说。这类应用通过採用某种机制来实现对自己行为的描写叙述(self-representation)和监測(examination)。并能依据自身行为的状态和结果。调整或改动应用所描写叙述行为的状态和相关的语义。主要是指程序能够訪问、检測和改动它本身状态或行为的一种能力。

            举个样例来说,我们每个人都照过镜子。镜子中会展现我们完美的身材。那么这是通过什么实现的呢,小学学过自然科学的都知道。这是光的反射造成的。这就是反射。

            通过反射,我们能够清楚的看到不论什么一个对象的样子(属性和方法)。

    当然镜子中的像不是提前准备好放进去的,而是依据现有的对象,在一定条件下。解析出该对象的全部东西。然后展示出来的。这就是反射。

    2、为什么

            话说这个反射时怎么产生的,我们为什么要用呢。

    之前我们学习面向对象的思想。利用封装将一个对象的内外隔开了,从而降低了与外部的耦合, 同一时候它也影响了灵活性,比方,我们须要改动某个类的属性或方法。或者是为其加入一个方法,那么我们就须要去代码中改动它。尤其是我们在我们在执行过程中须要改变它时,就更加困难了。于是乎反射就来了。

            就像真实世界一样,我们须要把一些东西包装起来。给那些不用知道其内部结构的人用,这叫封装。而有时候又须要把一个东西的内部呈现出来。了解其构造。然后做出对应改变,这叫反射。

    3、优缺点

            静态编译:在编译时确定类型,绑定对象,即通过。

            动态编译:执行时确定类型。绑定对象。

    动态编译最大限度发挥了java的灵活性。体现了多态的应用。有以降低类之间的藕合性。

            (1)长处:一句话。反射机制的长处就是能够实现动态创建对象和编译,体现出非常大的灵活性,特别是在J2EE的开发中,它的灵活性就表现的十分明显。比方,一个大型的软件,不可能一次就把把它设计的非常完美。当这个程序编译后。公布了。当发现须要更新某些功能时。我们不可能要用户把曾经的卸载,再又一次安装新的版本号,假如这种话,这个软件肯定是没有多少人用的。採用静态的话,须要把整个程序又一次编译一次才干够实现功能的更新。而採用反射机制的话,它就能够不用卸载,仅仅须要在执行时才动态的创建和编译,就能够实现该功能。

            (2)缺点:它的缺点是对性能有影响。使用反射基本上是一种解释操作。我们能够告诉JVM,我们希望做什么而且它满足我们的要求。这类操作总是慢于仅仅直接执行同样的操作。

    4、总结

            反射机制是框架技术的原理和核心部分。

    通过反射机制我们能够动态的通过改变配置文件(以后是XML文件)的方式来载入类、调用类方法,以及使用类属性。这种话,对于编码和维护带来相当大的便利。在程序进行改动的时候,也仅仅会改动对应的功能就可以了,调用的方法是不用改的。更不会一改就改全身。

            反射事实上就是通过反编译解析出类或dll文件的结构,然后通过遍历得到对应的元素。它就是通过动态解析。得到我们所需的属性和方法。

            在此,我想说,学习一个东西,一定要结合实际,联系生活。看看它是怎么来的,为什么要有。

    仅仅有这样。我的学习才干越来越轻松。

  • 相关阅读:
    ASP.NET(4):多语言的解决方案
    无题
    SIP 计时器的总结(转)
    一个Sip协议栈的实现方案
    通过拦截WCF消息进行身份栈传播
    从WPF控件拖放到Winform控件的注意事项
    一个用C#操作OpenLDAP的例子
    通过定制行为拦截WCF消息
    一个基于Prism的方案的介绍
    MVVM模式下附加属性的使用
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7114894.html
Copyright © 2011-2022 走看看