在声明中:
fooFunc().barFunc(bazFunc());
barFunc()
显然不能执行,直到 bazFunc()
和 fooFunc()
都完成。
但是fooFunc()
和bazFunc()
的执行顺序有保证吗?
相关(但不同!)问题: Order of execution of parameters guarantees in Java?
最佳答案
这方面的文档是 15.12.4. Run-time Evaluation of Method Invocation
它说“在运行时,方法调用需要五个步骤。首先,可以计算目标引用。其次,评估参数表达式。第三,检查要调用的方法的可访问性。第四,找到要执行的方法的实际代码。第五,创建一个新的激活框架,必要时执行同步,并将控制权转移到方法代码。”
在示例中,fooFunc()
被调用作为计算目标引用的一部分,而 bazFunc()
是参数表达式之一,因此 fooFunc ()
必须先调用。
关于java - Java中描述实例和参数的方法的执行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13724952/