本帖最后由 我手心里的宝 于 2013-4-11 12:28 编辑
- package com.qdzks.demo3.proxy;
- import java.lang.reflect.InvocationHandler;
- import java.lang.reflect.Method;
- import java.lang.reflect.Proxy;
- import java.util.ArrayList;
- import java.util.Collection;
- public class ProxyClass {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- final ArrayList target=new ArrayList();
- Collection collection=(Collection)getProxy(target,new MyAdvice());
- collection.add("aaa");
- collection.add("bbb");
- collection.add("ccc");
- collection.add("ddd");
- System.out.println(collection.size());
- System.out.println(collection);
- }
- private static Object getProxy(final Object target,final Advice advice ) {
- Object collection=Proxy.newProxyInstance(target.getClass().getClassLoader(),
- target.getClass().getInterfaces(),
- new InvocationHandler(){
- @Override
- public Object invoke(Object proxy, Method method,
- Object[] args) throws Throwable {
- // TODO Auto-generated method stub
- advice.beforMethod();
- Object retVal=method.invoke(target, args);
- advice.endMethod(method);
- return retVal;
- }
- }
- );
- return collection;
- }
- }
复制代码 两个问题:这样写我会写
1.动态类的具体作用到底是什么,面向接口编程这个
我理解,但是我感觉这样在方法中添加,也没有比以前简单多少呀,只要在类中添加不就可以了吗
2.为什么调用目标类的方法,然后让InvocationHandler调用Invoke方法,Collection就能添加,删除呢,求解
|