是否将参数传递给始终在java中从左到右排序的方法?

İsm*_*vuz 7 java methods argument-passing order-of-execution

我将调用一个带有两个参数的方法,但我会像这样使用k ++:

polygon.addPoint((int)rs.getDouble( k++),(int)rs.getDouble( k++ ));
Run Code Online (Sandbox Code Playgroud)

其实我想确保jvm先执行第一个参数,然后再执行第二个参数.如果订单以某种方式改变,参数将被传递错误的顺序.

非常感谢!

Roh*_*ain 10

是的,保证从左到右评估参数.符合JLS规则的任何编译器都应遵循该规则.这在JLS§15.7.4中提到:

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


das*_*ght 9

是的,Java保证这一点.但是,这并不意味着使用这样的代码是个好主意:代码的读者可能会彻底混淆.

明确显示顺序要清晰得多:

int a = (int)rs.getDouble(k++);
int b = (int)rs.getDouble(k++);
polygon.addPoint(a, b);
Run Code Online (Sandbox Code Playgroud)