给出以下Java代码示例:
getCurrentPosition
Java语言规范是否保证在 builder.something()
.somethingElse()
.somethingMore(builder.getSomething());
方法之后getSomething()
被调用,或者是允许重新排序执行的Java实现?
答案 0 :(得分:5)
JLS, Section 15.12.4保证在计算参数之前计算目标引用。
在运行时,方法调用需要五个步骤。首先,可以计算目标参考。其次,评估参数表达式。 ...
必须首先评估somethingElse
方法,以计算somethingMore
方法的目标引用。然后评估builder.getSomething()
以将参数的值提供给somethingMore
。然后可以执行somethingMore
。
由于此规则,不允许JVM重新排序执行。