从这篇文章中可以学到对字节码文件的基本操作,通过字节码获取一个类里面constructor(构造器),method(方法),通过构造器得到实例
工具类如下:
创建JdkProxyHello工具包
package com.example.demo.Test;
public class JdkProxyHello implements JdkProxy {
@Override
public String dsa() {
return "name";
}
}
通过反射调用工具包代码如下:
public class Reflection {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class aClass=Class.forName("com.example.demo.Test.JdkProxyHello");
Class aClass1=aClass.getClass(); //得到字节码文件
System.out.println("this is my interface:"+aClass1.getInterfaces());
Method method=aClass.getMethod("dsa"); //从字节码文件里面得到所有的方法
System.out.println("this is my method:"+method);
Constructor constructor=aClass.getConstructor(); //从字节码文件里面得到构造器
//从构造器里面得到实例
JdkProxyHello jdkProxyHello= (JdkProxyHello) constructor.newInstance();
System.out.println("从构造器得到的实例:"+jdkProxyHello);
System.out.println("这个是我的constructor:"+constructor);
Object o=method.invoke(jdkProxyHello);
System.out.println("从method方法里面得到对象"+o);
}
}
可以得到以下结果:
了解java文件结构,就可以很容易的理解了