• 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");

      

  • 相关阅读:
    自动装箱和==和equals
    4.1 java 类加载器
    23种设计模式
    ionic2打包 配置路径
    ionic2 native app 更新用户头像暨文件操作
    Spring Security三种认证
    maven设置本地仓库地址和设置国内镜像
    ps选框工具全解
    最长公共子序列问题
    内部排序算法的稳定性
  • 原文地址:https://www.cnblogs.com/zfc-java/p/7536132.html
Copyright © 2020-2023  润新知