50,528
社区成员
发帖
与我相关
我的任务
分享
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
for (Integer integer : list) {
if(integer == 3){
list.remove(integer);
}
}
详情参看:http://www.blogjava.net/EvanLiu/archive/2008/08/31/224453.html
该Bug产生原因就是,在执行对list的操作后,没有更新跟list相关的属性,像长度之类的。
推广开来,当我们修改对象的某个属性时,同时也要更改与之逻辑相关的属性,否则就会因为一致性问题,造成奇怪的错误。
Connection conn = DriverManager.getConnection(...);
...
conn.close(); //如果前面的业务处理出错,连接不会关闭
比较靠谱的方式是使用try...finally保证连接的关闭:
Connection conn = DriverManager.getConnection(...);
try {
...
} finally {
conn.close();
}
由此展开,文件的关闭,Hibernate Session的关闭,都要注意这个问题