因此,我创建了一个类,该类允许您选择传入自身的新实例:
public ExampleObject(String name, ExampleObject... exampleObjects) {
}
public static void main(String[] args) {
ExampleFunction(new ExampleObject("Test", new ExampleObject("Test2")));
}
这将如何执行?外部ExampleObject的构造函数是先调用还是内部调用?
最佳答案
参数的评估由JLS 15.12.4.2描述。
摘录:
参数表达式(如果有)按从左到右的顺序计算
对。如果对任何参数表达式的求值完成
突然之间,那么右边任何参数表达式的任何部分都不会出现
被评估,并且方法调用突然完成
出于同样的原因。第j个参数的求值结果
expression是第j个自变量值,其中1≤j≤n。
将其应用于您的案例,评估顺序为:
ExampleFunction(new ExampleObject("Test", new ExampleObject("Test2")));
- new ExampleObject("Test", new ExampleObject("Test2"))
- - "Test"
- - new ExampleObject("Test2")
- - - "Test2"
这是调用参数进行评估的顺序。这意味着依次评估
new ExampleObject("Test", new ExampleObject("Test2"))
首先将评估new ExampleObject("Test2")
。