跳转返回null

时间:2016-02-15 16:30:59

标签: java android

在我不小心尝试在发布模式下调试之前,我曾经见过这样的事情,但事实并非如此。对我的问题。我在Android应用程序中有这段代码:

if (leftRight[0] != null && leftRight[1] != null) {
    Log.d("", "test");
    return leftRight;
} else {
    Log.e("", "test134");
    return null;
}

调试时,if语句为true,并执行第一个Log.d()。然而,当踩到下一行时,它会直接跳转到返回null,我不明白这是怎么回事,因为它在else而不是if。第二个Log.d()也被跳过。

希望我只是错过了一些小事,但我对于发生的事情感到非常困惑。任何指向我正确方向的事情都值得赞赏。

修改 如果重要,leftRight是包含两个点的Point []。

2 个答案:

答案 0 :(得分:3)

基本上,你是对的,不应该发生。但是,请考虑以下代码:

Log.d("", "test");
if (leftRight[0] != null && leftRight[1] != null) {
    return leftRight;
} else {
    return null;
}

它具有相同的效果。也许您的编译器以这种方式重构代码,而调试器只是尽可能地反映这一点......

编辑:您可以使用" javap"

找出是否属于这种情况

EDIT2:如果您更改日志消息以执行其他操作,您还可以尝试更改行为是否会发生变化...

答案 1 :(得分:2)

如果函数返回正确的值,则调试器存在一些问题的可能性很大。在构建代码后修改代码时,示例中可能会出现行之间不匹配的情况。我建议您清理工作区,重建它并重试。