JDK 代理生成器,在生成类是会根据参数“sun.misc.ProxyGenerator.saveGeneratedFiles”来决定是否将二进制保存到本地文件中,
具体的路径查看源码:
ProxyGenerator.access$000(this.val$name) + ".class"
根据access$000这个方法生成的路径来保存
在openjdk中这个access$000 是对应
private static String dotToSlash(String name) {
return name.replace('.', '/');
}
所以文件是保存在
FileOutputStream localFileOutputStream = new FileOutputStream(ProxyGenerator.access$000(this.val$name) + ".class");
可以测试一下这个文件存放的具体路径:
FileOutputStream file = new FileOutputStream("$Proxy0" + ".class");
System.out.println(new File("$Proxy0" + ".class").getAbsolutePath());
这样在下面生成动态代理类的时候会将class文件保存
反编译class文件,可以看到有一个参数为InvocationHandler的构造方法,实现接口方法种的代码如下:
public final void printA()
throws
{
try
{
this.h.invoke(this, m3, null);
return;
}
catch (RuntimeException localRuntimeException)
{
throw localRuntimeException;
}
catch (Throwable localThrowable)
{
}
throw new UndeclaredThrowableException(localThrowable);
}
表明代理类只是做了一层封装,具体实现是在InvocationHandler中来做。
分享到:
相关推荐
该项目是一款基于freeRTOS操作系统和STM32F103x微控制器的手机远程控制浴室温度系统设计源码,共包含1087个文件,包括580个C语言源文件、269个头文件、45个汇编源文件、36个数据文件、36个目标文件、35个编译规则文件、28个包含文件、27个文本文件、6个源文件、3个归档文件。此系统通过手机远程实现对浴室温度的有效控制,适用于智能浴室环境管理。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。