/**
* 动态代理升级版
* */
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class DinamicProxyNew implements InvocationHandler {
private Object proxyObj;
public DinamicProxyNew(Object obj){
this.proxyObj=obj;
}
public static Object factory(Object obj){
//动态创建obj的类的实例
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), new DinamicProxyNew(obj));
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
//打印参数
if(args!=null){
for(Object obj:args){
System.out.println(obj);
}
}
return method.invoke(proxyObj, args);
}
}
public class ClientNew {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list=new ArrayList<String>();
list=(List<String>)DinamicProxyNew.factory(list);
System.out.println(list.add("dawson"));
}
}