欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java实现动态代理示例分享

程序员文章站 2024-02-26 23:45:46
复制代码 代码如下:import java.lang.reflect.invocationhandler;import java.lang.reflect.method;i...

复制代码 代码如下:

import java.lang.reflect.invocationhandler;
import java.lang.reflect.method;
import java.lang.reflect.proxy;

public class loghandler 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;
        try {
            system.out.println("方法开始:" + method);
            result = method.invoke(delegate, args);
            system.out.println("方法结束:" + method);
        } catch (exception e) {
            e.printstacktrace();
        }
        return result;
    }
}

复制代码 代码如下:

public interface animal {
    public void hello();
}

动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于aop的框架)的设计与开发,本文将通过实例来讲解java动态代理的实现过程。

复制代码 代码如下:

public class monkey implements animal {

    @override
    public void hello() {
        // todo auto-generated method stub
        system.out.println("hello");
    }
}

复制代码 代码如下:

public class main {
    public static void main(string[] args) {
        loghandler loghandler = new loghandler();
        animal animal = (animal) loghandler.bind(new monkey());
        animal.hello();
    }
}


java实现动态代理示例分享