为什么IF和ELSE都被执行了?

时间:2012-04-05 07:57:26

标签: java android eclipse

private static synchronized String[][] map2data(Map<String, Object> map) {
    if (map != null) {
        String[][] msg_data = (String[][]) map.get("message_data");
        return msg_data;
    } else {
        return null;
    }
}

我的android项目的java代码如下。当我在eclipse中调试它时,在String[][] msg_data = (String[][]) map.get("message_data");执行后,它会转到return null;案例中的else

我对此完全感到困惑。首先我想String[][] msg_data = (String[][]) map.get("message_data");中出现了问题,但当我将其更改为String a = "a"时,它仍然是相同的。为什么? 可能是因为“静态同步”还是其他什么?

3 个答案:

答案 0 :(得分:2)

它的显示方式..你也可能会注意到在那个else语句中只有return语句在调试时突出显示而不是之前的语句......它从未真正执行过..尝试在那里打印一些东西使用Log

else条件

答案 1 :(得分:2)

我认为你的代码和二进制文件不同步。尝试重新编译,你不应该再看到它了。

答案 2 :(得分:1)

从你的代码看,它永远不会发生......

检查msg_data中的if statement可能是 null 。如果你正确调试它可能是你的代码不同步。所以再次建立..

修改

从中删除其他部分,使用此代码,

<强> CODE:

private static synchronized String[][] map2data(Map<String, Object> map) {
String[][] msg_data = null;
    if (map != null) {
        msg_data = (String[][]) map.get("message_data");
       } 
return msg_data;
}