深入Java动态代理源码
背景介绍
什么是动态代理? 动态代理,本质上还是代理模式,只不过代理类是在JDK内部产生并创建实例(字节码编辑)。 再者其内部还维护了一个基于弱引用的缓存结构。总结来说:动态代理 = 代理模式 + 字节码编辑 + 弱引用缓存。
我们来探究一下这个过程。
原理探究
示例代码:
public class TestProxy {
interface Hello {
void hello();
}
private static class HelloImpl implements Hello {
@Override
public void hello() {
System.out.println("hello");
}
}
public static void main(String[] args) {
Hello hello = new HelloImpl();
Class<? extends Hello> clazz = hello.getClass();
Hello proxy = (Hello)Proxy.newProxyInstance(clazz.getClassLoader(),
clazz.getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//
String n
还没有评论,来说两句吧...