正如Peter Pei Guo所說,花括號在這裏沒有做任何事情。但值得注意的是其他一些東西:
它們不是這個上下文中的初始化塊。顯示的代碼只在方法或構造函數體內纔有意義。在這種情況下,大括號只是一個塊聲明...不是初始化塊。
塊語句可以意味着什麼。例如:
public void method() {
{
Game game = new Game("Gladiator", null, 10);
game.setState(GameState.STARTING);
game.setJoinable(true);
}
{
Game game = new Game("Fashion Model", null, 10);
game.setState(GameState.STARTING);
game.setJoinable(true);
}
}
在這種情況下的塊是提供一個範圍,它允許我們聲明第二games
變量沒有編譯錯誤。
但是你的問題中的代碼沒有使用這個。看起來作者對他的代碼的視覺外觀有「一件事」。
所以哪個塊被執行時?
隨着執行封閉塊(或方法體),塊語句按正常語句順序執行。他們只是陳述,他們表現得像其他陳述。
每次創建實例時,實例初始化程序塊都會按照任何其他字段聲明/實例初始化程序的順序執行。它們在顯式或隱式構造函數鏈之後執行,但在當前類構造函數的其餘部分之前執行。
您沒有向我們展示足夠的上下文絕對確定這些是什麼類型的塊......但我們認爲您向我們展示了塊語句。
那麼哪個塊在什麼時候被執行? –