Java动态代理只支持Interface,可以控制对象的访问
看一个例子:
上面定义了一个接口Animal和实现类Dog,接下来看重点ProxyHandler
使用动态代理的关键就是要实现InvocationHandler,在ProxyHandler 中定义了一个回调ProxyCallBack,方便调用
使用
运行结果如下
如果注释掉ProxyHandler中的method.invoke(target, args);
将不会打印Dog eat,可见动态代理能控制对象的访问
Android中的插件机制也是使用了动态代理,可见动态代理的重要性