第一:调用size()方法的时候,调用了InvacationHandler的invoke方法;
第二:ArrayList target = new ArrayList ()在InvacationHandler的invoke方法里面的时候,proxy3每调用一个add方法的时候,invoke被调用.
调用后执行new ArrayList (),三次调用后,三次执行new ArrayList ().也就是说,有了三个不一样的target,每次都是新的.最后当你调用size()的时候,
invoke方法里面method.invoke(target,args);这里就是调用的target里面的size()方法.而这个target又是一个新的ArrayList(),里面没有数据.所以为0.
第三:建议提问时代码部分不要用截图.使用规范代码格式,方便别人为你调试. |