У меня есть ситуация, когда я хотел бы вернуть 2 значения из метода. Я пытаюсь понять, как это сделать на Java. В C# я бы просто использовал 2 параметра out или struct в этом случае, но не уверен, что лучше всего делать для Java (кроме пары, поскольку мне, возможно, придется изменить это на 3 значения или создать новый класс для возврата объекта).Метод Java для возврата нескольких значений
Мой пример таков:
public void myMethod(Signal signal){
MyEnum enum = MyEnum.DEFAULT;
String country = "";
// based on signal, I need to get 2 values, one is string, other is
// an enumeration
if (signal.getAction() == "Toyota"){
enum = MyEnum.TOYOTA;
country = "Japan";
} else if (signal.getAction() == "Honda"){
enum = MyEnum.HONDA;
country = "Japan";
} else if (signal.getAction() == "VW"){
enum = MyEnum.VW;
country = "Germany";
} else {
enum = MyEnum.DEFAULT;
country = "Domestic";
}
// how to return both enum and country?
return ???
}
Это просто пример, чтобы объяснить, что мне нужно (возвращение на одну-то, имеющий 2 значения, одна строка, другая представляет собой перечисление в данном случае). Поэтому, игнорируйте любые проблемы с моим сравнением строк или логикой, я хочу сказать, как вернуть что-то. Например, в C# я мог бы определить структуру и вернуть эту структуру, или я мог бы использовать параметры для возврата 2 значений. Но я не уверен, как это сделать на Java.
Почему вы не хотите возвращать новый класс для марки и модели? Обратите внимание, что ваши тесты равенства строк не работают, вы вызываете 'car.getMake()' почти в каждом случае, и вам будет лучше иметь метод MyEnum.fromText' или что-то подобное ... –
Out is not существуют в Java, но вы можете вернуть массив со значениями или создать значение вне метода и дать ему значение –
@JonSkeet Спасибо Jon. Я хочу сказать, что мне нужно вернуть одно «что-то», состоящее из строки и значения перечисления. Таким образом, проверка строки не имеет значения. Кроме того, что касается возвращения объекта, я бы предпочел не потому, что мне нужно определить новый класс, а также обработать возвращаемый объект, например, очистить память, полученную этим объектом. – pixel