JLS, section 15.12.4 , ensures that the target link will be evaluated before the arguments are evaluated.
When you start a method call, five steps are required. First, the target link can be computed. Secondly, argument expressions are computed ....
First, the somethingElse method must be evaluated to calculate the target link for the somethingMore method. Then builder.getSomething() is evaluated to supply the value for the somethingMore parameter. Then somethingMore can be executed.
Because of this rule, JVMs cannot change the order of execution.
source share