zoukankan      html  css  js  c++  java
  • Java反射机制

    Java反射机制

    一、定义

           指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;

            对于任意一个对象,都能调用它的任意一个方法;

            这种动态获取信息以及动态调用对象方法的功能叫Java语言的反射机制。

    二、应用

            1、生成动态代理;

             2、面向切片编程(在调用方法的前后各加栈帧)。

    三、优点与缺点

           静态编译:在编译时确定类型,绑定对象,即通过。 
           动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。 
           反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中它的灵活性就表现的十分明显。

           反射机制的缺点是对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。

    四、常用方法

      (1)获得构造函数的方法 

        Constructor getConstructor(Class[] params)//根据指定参数获得public构造器

        Constructor[] getConstructors()//获得public的所有构造器

        Constructor getDeclaredConstructor(Class[] params)//根据指定参数获得public和非public的构造器

        Constructor[] getDeclaredConstructors()//获得public的所有构造器 
      (2)获得类方法的方法 
        Method getMethod(String name, Class[] params),根据方法名,参数类型获得方法

        Method[] getMethods()//获得所有的public方法

        Method getDeclaredMethod(String name, Class[] params)//根据方法名和参数类型,获得public和非public的方法

        Method[] getDeclaredMethods()//获得所以的public和非public方法 
     (3)获得类中属性的方法 
        Field getField(String name)//根据变量名得到相应的public变量

        Field[] getFields()//获得类中所以public的方法

        Field getDeclaredField(String name)//根据方法名获得public和非public变量

        Field[] getDeclaredFields()//获得类中所有的public和非public方法 

    五、获取Class类

    Person p1 = new Person();
    //下面的这三种方式都可以得到字节码
    CLass c1 = Date.class();
    p1.getClass(); 
    //若存在则加载,否则新建,往往使用第三种,类的名字在写源程序时不需要知道,到运行时再传递过来
    Class.forName("java.lang.String");

      

  • 相关阅读:
    websocket介绍
    阿里支付接口
    王爽 汇编 检测点 14.2
    如何用汇编写出一个心形图像
    王爽 汇编 实验12
    王爽 汇编 实验11
    王爽 汇编 实验10
    王爽汇编 检测点10.5
    二元选择排序
    螺旋矩阵
  • 原文地址:https://www.cnblogs.com/zfc-java/p/7536132.html
Copyright © 2011-2022 走看看