我正在循环访问Parameter
对象的集合,正在寻找Parameter.name = "Code"
。如果我不能找到它,我默认列表中的第一个参数,如下图所示:Java foreach循环未找到现有列表元素
header = WBMessageFactory.getWBMessageDescriptor(Configuration.getWBHeaderIDString());
for (Parameter p : header.getSegment().getParameter()) {
if (p.getName() == "Code") {
String wbCode = raw.substring(p.getStartPosition().intValue(), p.getLength().intValue());
logger.info("Found WB code... " + wbCode);
body = WBMessageFactory.getWBMessageDescriptor(wbCode);
break;
}
}
if (body == null) {
Parameter p = header.getSegment().getParameter().get(0);
logger.error("Could not find Code parameter in Header template, using " + p.getName());
body = WBMessageFactory.getWBMessageDescriptor(raw.substring(p.getStartPosition().intValue(), p.getLength().intValue()));
}
正如你所看到的,我日志Parameter
名字的时候我找不到代码。 偶尔,记录显示如下:
Could not find Code parameter in Header template, using Code
谁能解释一下到底是怎么回事?
你永远不应该*实习生自己动手。 (*)对于专家:几乎从不。如果以错误的方式使用它可能会导致内存泄漏。 –
@马克:谢谢,我会重申一下这个答案。 – millimoose