JAVA动态代理

来源:互联网 发布:李鸿章杀降 知乎 编辑:程序博客网 时间:2024/05/22 03:31
public interface ISay {    public void say();    public void say1();}
public class Person implements ISay{    public void say(){        System.out.println("say");    }    public void say1(){        System.out.println("say1");    }}
public class ProxySay implements InvocationHandler {    //需要绑定的对象    private Object delegate;    //进行绑定的方法    public Object bind(Object delegate)    {        this.delegate=delegate;        return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),delegate.getClass().getInterfaces(),this);    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        Object result=null;        if (method.getName().equals("say1"))        {            System.out.println("brfore+say1");            result=method.invoke(delegate,args);            System.out.println("after+say1");        }        if (method.getName().equals("say"))        {            System.out.println("brfore+say");            result=method.invoke(delegate,args);            System.out.println("after+say");        }        return result;    }}
  ProxySay proxySay=new ProxySay();        ISay pp=(ISay) proxySay.bind(new Person());        pp.say();        pp.say1();
0 0
原创粉丝点击