方法在方法调用中返回false,但实际上在Android应用程序中返回true给callee

时间:2014-11-11 03:54:42

标签: android multithreading android-studio

所以我知道我应该发布代码,但我的代码相当复杂,而且我认为它不会提供帮助。

此方法:

public boolean placePlayer(Player player, int startingX, int startingY)
{
    if(checkNotOnBoard(startingX, startingY))
        return false;
    player.setStartingPosition(startingX, startingY);
    placeStartingTile(startingX, startingY);
    return true;
}

调用checkNotOnBoard(),即:

private boolean checkNotOnBoard(int positionX, int positionY)
{
    if(_board.length < 1)
        return true;
    if(positionX < 0 || positionY < 0)
        return true;
    if((positionX < _board.length) && (positionY < _board[0].length))
        return true;
    return false;
}

我将调试断点设置为if(checkNotOnBoard(startingX,startingY)),逐步执行该方法,它转到该方法的最后一行(返回false),当它返回到placePlayer时,返回为true ,并将placePlayer移动到返回false行。 我唯一的理论是_board正在重置,但据我所知,没有其他线程正在运行代码的这一部分。它是一个Android应用程序,我正在使用Android Studio在HTC One M8设备和Nexus 7上进行调试。

1 个答案:

答案 0 :(得分:4)

执行返回时,调试器始终命中方法的最后一行。它实际上并不意味着最后一个语句被执行。可能发生的事情是java引擎在最后一行弹出堆栈的返回地址。