Всегда ли передача аргументов методу упорядочена слева направо в java?

Я вызову метод с двумя аргументами, но буду использовать k++ следующим образом:

polygon.addPoint((int)rs.getDouble( k++),(int)rs.getDouble( k++ ));

На самом деле я хочу быть уверен, что jvm сначала выполняет первый аргумент, а затем второй. Если каким-то образом порядок изменится, аргументы будут переданы в неправильном порядке.

Большое спасибо!


person Ismail Yavuz    schedule 27.03.2014    source источник
comment
Создание двух разных целых чисел упростит поддержку этого кода IMHO.   -  person sp00m    schedule 27.03.2014
comment
Хотя порядок должен быть гарантирован, я бы не стал полагаться на это, особенно если есть простые способы избавиться от этой зависимости.   -  person Thomas    schedule 27.03.2014


Ответы (3)



Да, Java гарантирует это. Однако это не означает, что использование такого кода — хорошая идея: читатели вашего кода могут сильно запутаться.

Гораздо чище показать порядок явно:

int a = (int)rs.getDouble(k++);
int b = (int)rs.getDouble(k++);
polygon.addPoint(a, b);
person Sergey Kalinichenko    schedule 27.03.2014

Java не поддерживает именованные параметры, поэтому вы правильно понимаете, что параметры считываются в позиции.

Например, метод с сигнатурой (int, String) и метод с сигнатурой (String, int) никогда не спутаешь друг с другом, Java учитывает тип и последовательность параметров при выяснении, какой метод вызывать.

Точно так же в вашем методе у вас всегда будут параметры, поступающие предсказуемым и единообразным образом.

По этой причине первый k++ всегда будет выполняться первым, а второй k++ всегда после него, и это гарантированное поведение.

person Ewald    schedule 27.03.2014
comment
OP в основном спросил, будет ли левый k ++ выполняться перед правым k ++ и гарантировано ли это. Не уверен, где вы обращаетесь к этому. - person peter.petrov; 27.03.2014
comment
Питер, вы правы, я изменил свой ответ, спасибо за вклад. - person Ewald; 27.03.2014