Установить переменную из массива непосредственно в список переменных в Java

У меня есть метод Java, который возвращает массив двойников. Затем я хотел бы сохранить эти значения в отдельных переменных в вызывающей функции. Есть ли элегантный способ сделать это в Java.

Я мог бы написать это так:

double[] returnValues = calculateSomeDoubles();
double firstVar  = returnValues[0];
double secondVar = returnValues[1];

Мне просто интересно, есть ли способ сжать это до одной строки? Что-то типа:

(firstVar, secondVar) = calculateSomeDoubles();

Это довольно просто при написании сценариев, но более строгая типизация Java означает, что это, вероятно, невозможно.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 316
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Единственный способ - использовать отражение, если вы заранее знаете, сколько элементов вернет метод "calculateSomeDouble".

Потребуется вариант это. Но, как видите, кодировать нужно еще не все.

Итак, возникает вопрос? Вы хотите, чтобы это было автоматизировано? Или чтобы сэкономить время на разработку (избежать копирования / вставки)?

Если вы хотите автоматизировать какую-то задачу (например, заполнение объекта во время выполнения), то стоит выполнить вызов отражения и написать метод.

Вам нужно будет установить значение, а не только распечатать его.

Вызов клиента должен выглядеть так:

 SomeUtility.fill( myObject , withDoublesFromMethod() );
Ответ принят как подходящий

В принципе нет, это невозможно.

Вам нужно будет вернуть объект, содержащий значения.

MyObject myObject = calculateMyObject();

Если вы не получили обратно 2 двойных значения, вы можете вызвать в свой метод usig по ссылке.

void methode(double[] array)

Вы можете отправить массив длиной 2 и указать значения в методе.

Или вы возвращаете коллекцию, если возвращаемые значения могут измениться.

List methode()

Я не сторонник возврата таких значений, как

double[] methode()

Когда вы используете списки или коллекции, метод не так статичен, как вы работаете с массивами. Вы можете лучше использовать этот метод в других проектах.

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

Если бы вы были на этом месте, вы могли бы сделать что-то вроде этого:

List<Double> myVars = Arrays.asList(calculateSomeDoubles());

Но если вы должны хранить их в отдельных переменных, это не может быть сделано в одной строке. Я советую вам нет использовать некоторые из предлагаемых решений на основе отражения. Скорее всего, было бы намного лучше просто записать свои задания в несколько строк, как вы впервые предложили.

Я рассматривал возможность использования списка в качестве возвращаемого значения (или чего-то подобного, может быть, HashMap), но я решил, что для удобства чтения я все равно назначу им более удачные имена, так что легче вернуть массив двойников.

kaybenleroll 11.12.2008 21:10

Другие вопросы по теме