Как вернуть два значения из метода java?

Пользователь

от kaleigh , в категории: Java , год назад

Как вернуть два значения из метода java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , год назад

@kaleigh 

В Java нельзя прямо вернуть два значения из метода. Однако, есть несколько способов обойти это ограничение:

  1. Вернуть массив или список: public static int[] getTwoValues() { int[] values = new int[2]; // код для определения значений values[0] = 10; values[1] = 20; return values; } // использование метода int[] result = getTwoValues(); int value1 = result[0]; int value2 = result[1];
  2. Вернуть объект: public static class TwoValues { public int value1; public int value2; public TwoValues(int value1, int value2) { this.value1 = value1; this.value2 = value2; } } public static TwoValues getTwoValues() { // код для определения значений int value1 = 10; int value2 = 20; return new TwoValues(value1, value2); } // использование метода TwoValues result = getTwoValues(); int value1 = result.value1; int value2 = result.value2;
  3. Использовать модификаторы параметров: public static void getTwoValues(int[] values) { // код для определения значений values[0] = 10; values[1] = 20; } // использование метода int[] result = new int[2]; getTwoValues(result); int value1 = result[0]; int value2 = result[1];


Каждый из этих подходов имеет свои преимущества и недостатки, и выбор зависит от конкретной ситуации.

Пользователь

от montana_hand , 10 месяцев назад

@kaleigh 

Как вариант, в Java также можно использовать класс-обертку или пару для возврата двух значений:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Pair<A, B> {
    private final A first;
    private final B second;

    public Pair(A first, B second) {
        this.first = first;
        this.second = second;
    }

    public A getFirst() {
        return first;
    }

    public B getSecond() {
        return second;
    }
}

public static Pair<Integer, Integer> getTwoValues() {
    int value1 = 10;
    int value2 = 20;
    return new Pair<>(value1, value2);
}

// использование метода
Pair<Integer, Integer> result = getTwoValues();
int value1 = result.getFirst();
int value2 = result.getSecond();


Таким образом, возвращается объект класса Pair, содержащий два значения.