BeanFactory类的initBean方法中的这一段
for (int i=0;i<toCreate.size();i++) {
if (finishCreate(toCreate.get(i))) {
toCreate.remove(i);
}
}
ArrayList的revome(int index)方法删除后会让被删除的元素后的元素都向前移,
例如数组[0,1,2,3,4,5]
当i为0时,remove(i),数组就变成[1,2,3,4,5]
这时如果i++为1,则get(i)取出的就是2,1就漏掉了
这样会导致一次遍历不全
for (int i = 0; i < toCreate.size(); ) {
if (finishCreate(toCreate.get(i))) {
toCreate.remove(i);
} else {
i++;
}
}
改成这样更严谨