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

StackOverflow https://stackoverflow.com/questions/360030

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

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

(firstVar, secondVar) = calculateSomeDoubles();

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

Это было полезно?

Решение

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

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

MyObject myObject = calculateMyObject();

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

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

Вариант этот понадобится.Но, как вы видите, кодировать есть еще кое-что.

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

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

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

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

 SomeUtility.fill( myObject , withDoublesFromMethod() );

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

void methode(double[] array)

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

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

List methode()

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

double[] methode()

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top