以下Java代码在Android中无法按预期工作,无论它是使用JDK 1.6还是1.7编译的。当“if语句”被评估为true时,“found被赋值给变量mState,但是下一个语句”return ext;“没有被执行,而是执行了最后一个语句”return null;“。之前被销毁,以执行“返回null;”声明Java for-each循环内循环返回不按预期方式工作
String mState = null;
for (PacketExtension ext : packetExtensions) {
if (elementName.equals(ext.getElementName()) && namespace.equals(ext.getNamespace()))
{
mState = "found";
return ext;
}
}
return null;
我也尝试如下重新编码,但正如前面也面临着同样的问题
PacketExtension ext = null;
for (Iterator<PacketExtension> iterator = packetExtensions.iterator(); iterator.hasNext();) {
ext = iterator.next();
if (elementName.equals(ext.getElementName()) && namespace.equals(ext.getNamespace())
{
return ext;
}
]
return null;
以下修改后的代码是。即使我试图在“if语句”为true时将ext分配给新的局部变量ext2,并将“return null;”更改为“return ext2;”,ext2也是ge在“返回ext2”之前销毁,而新方法也无法正常工作。欣赏一些专家的建议。
PacketExtension ext = null;
PacketExtension ext2 = null;
for (Iterator<PacketExtension> iterator = packetExtensions.iterator(); iterator.hasNext();) {
ext = iterator.next();
if (elementName.equals(ext.getElementName()) && namespace.equals(ext.getNamespace())
{
ext2 = ext;
break;
}
]
return ext2;
我会在if语句中加入一个print语句来验证这段代码是否正在使用 –
您确定if语句的计算结果为true吗?因为如果它,你的代码应该工作。这将有助于查看包含此代码的完整方法。 – Eran