java动态代理

目标对象接口

package proxy;

public interface TargetInterface {
    void targetMethod();
}

目标对象

package proxy;

public class Target implements TargetInterface{
    @Override
    public void targetMethod() {
        System.out.println("-----目标方法执行-----");
    }
}

代理对象测试

package proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyTest {
    public  static  void main(String[] args){
        Target target = new Target();//目标对象
        TargetInterface proxy = (TargetInterface)Proxy.newProxyInstance(
                Target.class.getClassLoader(),//目标对象的类加载器
                Target.class.getInterfaces(),//目标对象所有实现的接口
                new InvocationHandler() {//
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        System.out.println("-----目标方法执行前-----");
                        method.invoke(target,args);//执行目标方法
                        System.out.println("-----目标方法执行后-----");
                        return null;
                    }
                }
        );
        proxy.targetMethod();
    }
}

 

posted @ 2018-09-25 16:45  Atm_fan  阅读(138)  评论(0)    收藏  举报

12131313131