用Java确保参数的执行顺序?


Answers:


81

Java语言规范(关于表达式)中:

15.7.4从左到右评估参数列表

在方法或构造函数调用或类实例创建表达式中,参数表达式可能出现在括号内,以逗号分隔。每个参数表达式似乎都在其右侧任何参数表达式的任何部分之前被完全评估。


9
虽然这是事实,但是请不要以依赖于执行顺序的方式进行编码。只是增加了复杂性而没有增加功能。
乔恩

8
实际上,“建议代码不要严格依赖此规范。” java.sun.com/docs/books/jls/third_edition/html/...
trashgod

47
@乔恩我不同意!如果它在规范中,则可以依靠它。例如,要从文件读取矩形,请使用以下代码:myRect = new Rectangle(scan.nextInt(),scan.nextInt(),scan.nextInt(),scan.nextInt()); 简洁明了。更长的实现将是不必要的复杂性。
约翰·亨克尔

5
我这样做是为了避免在许多地方保存局部变量,并使解析器:D中的每个funcion调用的代码缩短1/2行。避免许多局部变量(除非创建更复杂的代码)通常也是一种好的设计。
CoffeDeveloper

7
@Jon如果Java允许在构造函数链接调用之前进行临时变量声明,那么我会同意您的观点。但是,在将构造函数链接与复杂的成员初始化结合使用时,我认为没有可行的方法可以依靠这种行为。
杰夫·G
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.