最近重新研究了一下反射和动态代理,又有新收获。
对getDeclaredFields,getFields 对比过后发现这两种方法其实差别蛮大,这是由于以前在看文档时没有仔细留下的问题。
对于动态代理来说Proxy.class和InvocationHandler.class是特别重要的。
下面写了个例子:
动态代理生成步骤:
1.创建一个实现接口InvocationHandler的类,它必须实现invoke方法;
2.创建被代理的类以及接口;
3.通过Proxy的静态方法newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler handler)创建代理
4.通过代理调用方法