★12.类型信息

2017-07-03  本文已影响0人  iDragonfly

Class

Method

Constructor

动态代理

class Proxyer implements InvocationHandler {
    private Object obj;

    Proxyer(Object obj) {
        this.obj = obj;
    }

    // 重新实现InvocationHandler以完成代理,参数为:对象,方法,参数
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // 此处进行需要代理的工作
        return method.invoke(obj, args);
    }
}

interface I {
    void doSomething();
}

class A implements I {
    public void doSomething() {
        System.out.println("doSomething");
    }
}

class SimpleDynamicProxy {
    public static void main(String[] args) {
        // 载入接口加载器,接口的Class对象数组,代理类对象
        I proxy = (I) Proxy.newProxyInstance(
                I.class.getClassLoader(),
                new Class[]{I.class},
                new Proxyer(new A()));
        proxy.doSomething();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读