★12.类型信息

Class

Method

  • Method:方法对象,可以用Class对象获取。

Constructor

  • Constructor:构造器对象,可以用Class对象获取。

动态代理

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();
    }
}

你可能感兴趣的:(★12.类型信息)