以下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;
答案 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;