第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