Java for-each循环内部循环返回不按预期工作

时间:2014-07-04 01:50:39

标签: java android

以下Java代码在Android中无法正常工作,无论是使用JDK 1.6还是1.7编译。当“if语句”被评估为true时,“found被赋值给变量mState,但是下一个语句”return ext;“没有被执行。而是执行了最后一个语句”return null;“。mState变量似乎也有在执行“return null;”语句之前被销毁。

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 statement”为true时尝试将ext分配给新的局部变量ext2;并改变“return null;”为了“返回ext2;”,ext2在它的“返回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;

2 个答案:

答案 0 :(得分:0)

如果通过“下一个语句”返回ext;“没有被执行。”你的意思是当踩着调试器时,“当前语句”指示器转到第二个返回,它只是一个使用Eclipse进行Android调试的问题。

只要方法中有多个退出点,它就会显示在最后一个退出点上。但是,结果是正确的,您可以通过逐步调用调用方法并验证返回的值来检查它。

答案 1 :(得分:-1)

String mState = null;
PacketExtension ext = null;

for (PacketExtension ext : packetExtensions) {
    if (elementName.equals(ext.getElementName()) && namespace.equals(ext.getNamespace()))
    {
        mState = "found";
         this.ext = ext;
        break;
    }
}
return ext;