代理的实现分为:
静态代理:代理类是在编译时就实现好的。也就是说 Java 编译完成后代理类是一个实际的 class 文件。
动态代理:代理类是在运行时生成的。也就是说 Java 编译完之后并没有实际的 class 文件,而是在运行时动态生成的类字节码,并加载到JVM中。
静态代理
动态代理
静态代理的demo
动态代理的demo
代理涉及的概念
InvocationHandler接口
代理类调用任何方法都会经过这个调用处理器类的invoke方法。
Proxy
主要用于产生代理类,通过 Proxy 类生成的代理类都继承了 Proxy 类。newProxyInstance方法封装了获取代理对象。
newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h);方法传如的参数可以看出,代理一个对象,必须要要满足这个对象实现一个接口。