zoukankan      html  css  js  c++  java
  • 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;


                很多反射中的方法,属性等操作我们可以从这四个类中查询。还是哪句话要学着不断的查询API,那才是我们最好的老师。


             四,具体功能实现:

                    1,反射机制获取类有三种方法,我们来获取Employee类型

    1. //第一种方式:  
    2. Classc1 = Class.forName("Employee");  
    3. //第二种方式:  
    4. //java中每个类型都有class 属性.  
    5. Classc2 = Employee.class;  
    6.    
    7. //第三种方式:  
    8. //java语言中任何一个java对象都有getClass 方法  
    9. Employeee = new Employee();  
    10. Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)  

     

        2,创建对象:获取类以后我们来创建它的对象,利用newInstance

    1. Class c =Class.forName("Employee");  
    2.   
    3. //创建此Class 对象所表示的类的一个新实例  
    4. Objecto = c.newInstance(); //调用了Employee的无参数构造方法.  
  • 相关阅读:
    【转】Linux平台上用C++实现多线程互斥锁
    【转】用C++实现多线程Mutex锁(Win32)
    【转】ACM国内外OJ网站大集合
    【转】常用 blas 函数
    浏览器插件检查
    自定义事件
    JavaScript对象继承方式与优缺点
    如何页面减少重绘回流
    CSS3特效(3)——环形进度条
    CSS3特效(2)——文字特效
  • 原文地址:https://www.cnblogs.com/jpfss/p/8126586.html
Copyright © 2011-2022 走看看