反射获取类结构信息
从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类型的实例化对象进行方法调用,但是在获取 方法对象 是需要明确知道方法名称 以及 方法的参数类型
利用此类操作整体的形式上不会有任何的明确的类对象产生,一切都是依靠发射机制处理的,这样的处理避免了与某一个类的耦合问题。