2017-05-26 55 views
0

考慮寫在Android的工作室這個簡單的程序片段: enter image description here爲什麼我不能在某種返回語句中設置斷點?

enter image description here

當你把打破函數中的指針,如果返回類型是布爾或者整數機器人工作室告訴你有沒有可執行的代碼上第一個返回語句。但是,如果返回類型是String,它就可以工作。實際上,對於int和boolean返回類型,如果第一個返回語句實際上被觸發,調試器將突出顯示第二個返回語句。這顯然是錯誤的。我嘗試了幾個項目,這種行爲是一致的。

我在eclipse中用相同的一段代碼寫了一個普通的java應用程序。我沒有看到這個錯誤發生在那裏。我不確定這是Android studio IDE的錯誤,還是那裏確實沒有可執行代碼。如果那裏真的沒有可執行代碼,爲什麼?

+0

猜想:它是一種優化,返回(時間%2 == 0);'和'返回時間%2;'實際上是執行什麼?如果int返回值不是0和1,該怎麼辦? –

+0

@AndyTurner這是有道理的。我會嘗試改變這些值。 – darklord

+0

@AndyTurner如果我更改debuggerTest3的返回值,問題就會消失。 – darklord

回答

1

這似乎是intellij爲您優化代碼的結果。

if (time % 2 == 0) { 
    return true; 
} 
return false; 

可以寫成

return time % 2 == 0; 

注意,有一個「提示」上的截圖if,這很可能是一個「簡化」,使這一轉變。

相關問題