5
Java方法的調用順序如下Java代碼例如:具有給定鏈式方法
builder.something()
.somethingElse()
.somethingMore(builder.getSomething());
是它由Java語言規範保證getSomething()
調用後的somethingElse()
方法或是允許Java實現重新排序執行?
Java方法的調用順序如下Java代碼例如:具有給定鏈式方法
builder.something()
.somethingElse()
.somethingMore(builder.getSomething());
是它由Java語言規範保證getSomething()
調用後的somethingElse()
方法或是允許Java實現重新排序執行?
JLS, Section 15.12.4保證在評估參數之前計算目標引用。
在運行時,方法調用需要五個步驟。首先,可以計算目標參考。其次,對參數表達式進行評估。 ...
必須首先評估somethingElse
方法,以便計算somethingMore
方法的目標參考。然後builder.getSomething()
被評估爲爲參數somethingMore
提供一個值。然後somethingMore
可以執行。
由於此規則,JVM不允許重新排序執行。