Ordem de execução de parâmetros Garantias em Java?
-
18-09-2019 - |
Pergunta
Dada a seguinte chamada de função em C
:
fooFunc( barFunc(), bazFunc() );
A ordem de execução de barFunc
e BazFunc
não é especificado, então barFunc()
pode ser chamado antes bazFunc()
ou bazFunc()
antes da barFunc()
dentro C
.
Faz Java
Especifique uma ordem de execução de expressões de argumento da função ou como C
Isso não é especificado?
Solução
De Especificação da linguagem Java (em expressões):
15.7.4 Listas de argumentos são avaliadas da esquerda para a direita
Em um método ou invocação de construtor ou expressão de criação de instância de classe, as expressões de argumento podem aparecer dentro dos parênteses, separados por vírgulas. Cada expressão de argumento parece estar totalmente avaliada antes de qualquer parte de qualquer expressão de argumento à sua direita.