java动态代理初探之动态实现接口

2016-11-04 / 6 阅读 / Java

java动态代理一直觉得是个深奥研究,之前一直不曾研究过。不过现在刚刚研究一会就发现其果然强大。

动态实现接口:
1、待实现的接口

public interface IUser {
    String getName(String id);

}

2、代理处理类

这个主要是用来代理或实现接口的类,必须实现InvocationHandler
只要实现了invoke方法即可
class MyInvocationHandler implements InvocationHandler{

    public MyInvocationHandler() {
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        System.out.println(method.getName());
        System.out.println(args[0]);

        return null;
    }
}

3、测试代码

    public static void main(String[] args) throws IOException, NoSuchMethodException {
        //获取IUser接口动态代理类实例
        IUser instance = (IUser) Proxy.newProxyInstance(IUser.class.getClassLoader(), new Class[]{IUser.class}, new MyInvocationHandler());

        //执行接口方法,发现该方法已经实现
        instance.getName("wang");
    }

结果:

getName
wang
自此,一个动态代理的小例子就完成了。当然更复杂的逻辑也是类似的几步。
相关推荐