黑马程序员技术交流社区

标题: 代理 [打印本页]

作者: 周洋    时间: 2012-3-28 00:23
标题: 代理
具体怎么实现代理调用的方法与被代理的方法具备同样的功能呢?(动态代理)
作者: 抓哇    时间: 2012-3-28 09:27
就是靠JVM的动态代理类的handler参数就行了  基础加强讲的很细啊
作者: yangshang1    时间: 2012-3-28 10:06

import java.lang.reflect.*;

public class TestAgent {
    public static void main(String[] args) {
            Agent agent=new Agent();
            BAgentFace bAgentFace=null;
            agent.setObj(new BAgent());
            bAgentFace=(BAgentFace)Proxy.newProxyInstance(BAgentFace.class.getClassLoader(),new Class[]{BAgentFace.class},agent);
            bAgentFace.add();
    }
}
class Agent implements InvocationHandler
{
        private Object obj;
       
        public void setObj(Object obj) {
                this.obj = obj;
        }

        @Override
        public Object invoke(Object proxy, Method method, Object[] args)
                        throws Throwable {
               
                return method.invoke(obj,args);
        }
       
}
class BAgent implements BAgentFace
{
        public void add()
        {
                System.out.println("ni hao");
        }
}
interface BAgentFace
{
        public void add();
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2