动态代理最简单的理解就是代理的类型可以随时定义,- public static Object getProxy(final Object target, final Adrice adrice){
- Object proxy = Proxy.newProxyInstance(
- target.getClass().getClassLoader(),
- target.getClass().getInterfaces(),
- new InvocationHandler() {
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- adrice.before();
- Object objVal = method.invoke(target, args);
- adrice.after();
- return objVal;
- }
- });
- return proxy;
- }
复制代码 例如:target传递一个TreeMap,那么代理类就创建了一个Map类型的代理类;如果传递ArrayList,那么创建的就是一个Collection类型的代理类。
这样就提高了这段代码的重用率。 |