• 第23章:反射与类操作


    反射获取类结构信息  

      从clazz可以调用的方法说明获取类的信息(方法,属性,。。。。。)

    public Package getPackage()  获取包信息

    public Class<? super T> getSuperClass()  获取继承父类(的字节码信息)

    public Class<?>[] getInterface()  获取实现接口(返回数组,一个一个遍历)

    Clazz<?>[] clazz2 = clazz.getInterface();      代码片段,见微知著上面方法如何获取

    for(Class<?> temp : clazz){

      System.out.println(temp.getName());

    }

    反射调用构造方法

        实例化方法替代:calzz.getDeclaredConstructor.newInstance();

    所有类的构造方法的获取都可以直接通过Class类来完成,该类中定义有如下的几个方法

    反射调用普通方法

      在进行反射处理的时候也可以通过反射来获取类之中的全部方法,但是需要提醒的是,如果要想通过反射调用这些方法,必须有一个前提条件:类之中要提供有实例化对象。

      在Class类里面有如下操作可以获取方法对象:

      上面代码与开发关系不大,只要知道可以根据反射获取方法的结构即可,不需深入了解。Methos类中invoke()方法并结合实例化对象(Object类型)实现反射方法调用是一定要会的。

     通过反射实现的方法调用最大的特点是可以直接利用Object类型的实例化对象进行方法调用,但是在获取   方法对象   是需要明确知道方法名称   以及    方法的参数类型

      利用此类操作整体的形式上不会有任何的明确的类对象产生,一切都是依靠发射机制处理的,这样的处理避免了与某一个类的耦合问题。

    反射调用成员属性(了解)

    Unsafe工具类(了解)

  • 相关阅读:
    整数幂的求解
    非递归实现不重复序列的全排列(二)
    完整的将日期时间转换为汉字的代码
    如何得到某集合的所有子集合?
    再谈八皇后问题
    大数阶乘的计算(六)
    非递归实现不重复序列的全排列(一)
    非递归实现不重复序列的全排列(三)
    大数阶乘的计算(五)
    关于走楼梯的递归算法
  • 原文地址:https://www.cnblogs.com/djlindex/p/11340082.html
Copyright © 2020-2023  润新知