jdk动态代理实现代码

来源:互联网 发布:淘宝宝贝描述低能买吗 编辑:程序博客网 时间:2024/05/18 03:05

实现代码如下:

package bean.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface Hello{    public void toHelo(String str);}class HelloImpl implements Hello{    public void toHelo(String str)    {        System.out.println("HelloImpl......"+str);    }}class MyHandler implements  InvocationHandler{    //要代理的原始对象    private Object obj;    public MyHandler(Object obj)    {        super();        this.obj = obj;    }    /**    * 在代理实例上处理方法调用并返回结果    *     * @param proxy 代理类    * @param method 被代理的方法    * @param args 该方法的参数数组    */    public Object invoke(Object proxy, Method method, Object[] args)            throws Throwable    {        before();        Object result = method.invoke(obj, args);        after();        return result;    }    private void before()    {        System.out.println("before......");    }    private void after()    {        System.out.println("after......");    }}public class ProxyDemo{    public static void main(String[] args)    {        Hello hello = new HelloImpl();        InvocationHandler invocaionHandler = new MyHandler(hello);        Hello proxy = (Hello) Proxy.newProxyInstance(hello.getClass().getClassLoader(), hello.getClass().getInterfaces(),invocaionHandler);        proxy.toHelo("proxy代理对象实现toHello方法");    }}

运行结果:

before......HelloImpl......proxy代理对象实现toHello方法after......
原创粉丝点击