我在调试代码时遇到了一个我以前没有遇到过的现象。
基本上,似乎Java在每个循环中跳过集合的最后一个元素。
循环看起来像这样:
for (ReportRow contentRow : rows) {
if (contentRow instanceof Data1Row) {
doSomething1();
}
if (contentRow instanceof GrossAmmountRow) {
doSomething2();
}
if (contentRow instanceof TotalAmountRow) {
doSomething3();
}
if (contentRow instanceof FinalRow) {
return null;
}
}
现在集合“rows”由几个元素组成,每个元素都继承父类“ReportRow”(Data1Row,GrossAmountRow,TotalAmountRow,FinalRow)。
现在的问题是,每次执行循环时都会跳过集合的最后一个元素。我已经多次调试该方法以验证该集合是否仍然包含该元素,但该元素始终存在 - 它只是被跳过。
我的谷歌搜索没有给我任何令人满意的结果,所以我想我会在这里打开一个帖子。
之前有没有人遇到类似的事情?或者知道什么可能导致这个问题?我真的很茫然。
一些帮助会有很多帮助!
提前谢谢。
答案 0 :(得分:4)
if (contentRow instanceof FinalRow) {
return null;
}
如果您在FinalRow
对象后面有两个FinalRow
或其他内容,则会跳过"跳过"因为该方法在第一次遇到后停止。
答案 1 :(得分:0)
我已经解决了这个问题。
“问题”是我没有注意到这里使用了一个子列表,并且它的大小比原始列表小(仅为1)。
在我已经评论过这个帖子中的一些答案之后,我才明白了。
感谢所有试图提供帮助的人!