proxy

1, Proxy提供了建立动态代理类和实例的静态方法,也是建立动态代理方法的超类。函数

为接口建立动态代理的步骤:spa

1 InvocationHandler handler = new MyInvocationHandler(...);
2 Class<?> proxyClass = Proxy.getProxyClass(Foo.class.getClassLoader(), Foo.class);
3 Foo f = (Foo) proxyClass.getConstructor(InvocationHandler.class).newInstance(handler);

一般咱们写成这样:代理

Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),new Class<?>[] { Foo.class },handler

动态代理类是在运行时实现了一系列的接口的类,code

代理接口;代理实例;handler对象

代理实例上调用的一个方法,会被传递给代理实例的handler,还有一堆参数对象,代理实例经过反射技术实现真正调用。blog

 

 

 

2,InvocationHandler是代理实例必须实现的接口接口

每一个代理实例都有一个调用处理函数handler,当代理实例产生方法调用时,实际就传递给代理实例的handler处理;get

 这个接口只有一个方法:io

Object invoke(Object proxy, Method method, Object[] args)throws Throwable

proxy 被代理的对象,method 代理对象调用的方法实例,class

相关文章
相关标签/搜索