Java反射机制

一,先看一下反射的概念:

      主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改

应用所描述行为的状态和相关的语义。

      反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之

间进行源代码链接。但是反射使用不当会成本很高!

二,反射机制的作用:

       1,反编译:.class-->.java

       2,通过反射机制访问java对象的属性,方法,构造方法等;

       这样好像更容易理解一些,下边我们具体看怎么实现这些功能。

 三,在这里先看一下sun为我们提供了那些反射机制中的类:

       java.lang.Class;                

       java.lang.reflect.Constructor; java.lang.reflect.Field;        

       java.lang.reflect.Method;

       java.lang.reflect.Modifier;

四,反射加配置文件,使我们的程序更加灵活:

       在设计模式学习当中,学习抽象工厂的时候就用到了反射来更加方便的读取数据库链接字符串等,当时不是

太理解,就照着抄了。看一下.NET中的反射+配置文件的使用:

       当时用的配置文件是app.config文件,内容是XML格式的,里边填写链接数据库的内容:

     <configuration>  
lt;appSettings>  
<add     key=""  value=""/>  
lt;/appSettings>  
        </configuration>  

       反射的写法:

assembly.load("当前程序集的名称").CreateInstance("当前命名空间名称".要实例化的类名);

       这样的好处是很容易的方便我们变换数据库,例如我们将系统的数据库从SQL Server升级到Oracle,那么我们

写两份D层,在配置文件的内容改一下,或者加条件选择一下即可,带来了很大的方便。

       当然了,JAVA中其实也是一样,只不过这里的配置文件为.properties,称作属性文件。通过反射读取里边的内

容。这样代码是固定的,但是配置文件的内容我们可以改,这样使我们的代码灵活了很多!

原文地址:https://www.cnblogs.com/hr1997/p/5549834.html