一、预先准备一个接口及其实现类
//被代理的类
public interface Subject { void SubjectMethod(); }
//代理实现之一,当然,这个实现可以有很多
public class SubjectImpl implements Subject{ @Override public void SubjectMethod() { System.out.println("我是 SubjectImpl。。。"); } }
二、JDK的动态代理
Java动态代理位于java.lang.reflect包下,一般主要涉及到以下两个类:
1、Interface InvocationHandler
该接口中仅定义了一个方法:public Object invoke(Object obj, Method method, Object[] args),在使用时,第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。这个抽象方法在代理类中动态实现。
2、Proxy
该类即为动态代理类,static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h),返回代理类的一个实例,返回后的代理类可以当作被代理类使用。
示例:
public class InvocationHandlerImpl implements InvocationHandler { private Subject subject; public InvocationHandlerImpl(Subject subject){