Иногда вы хотите вернуть несколько значений из функции. Как это обычно делается в Java?
Один из вариантов - использовать массив, например, этот фрагмент Python, который возвращает список или кортеж:
value, success = read_unreliably()
if success:
print value
Другой вариант - вернуть хеш / dict, как в следующем примере JavaScript:
var result = readUnreliably()
if (result.success) {
alert(value);
}
Еще один - создать пользовательский объект именно для этой цели, например, в следующем примере Java:
ReadUnreliablyResult result = readUnreliably()
if (result.getSuccess()) {
System.out.println(result.getValue());
}
Конечно, вы также можете просто использовать некоторые глобальные переменные для хранения того, что вам нужно, вместо того, чтобы передавать вещи, но давайте просто скажем, что это не вариант.
java
coding-style
Майк М. Лин
источник
источник
Ответы:
Больно.
Эти методы не работают в Java; значения должны быть понижены от объекта.
Это наиболее часто, но создавать все эти маленькие классы утомительно. В C ++ обычно используется std :: pair, но в Java это обычно не делается.
С Lombok довольно легко создавать небольшие пользовательские объекты:
}
источник
Да, так , чтобы создать
struct
/tuple
/record
в Java является создание класса. Если это только для внутреннего использования, я предпочитаю использовать небольшой неизменяемый структурный класс с открытыми полями.Примеры:
Это гораздо проще сделать в Scala:
источник
Tuple2[Boolean, Int]
. Хотя в этом конкретном примере вы бы вернулиOption[Int]
.Для примера, который вы привели, выдача исключения будет самым стандартным способом его обработки:
Более того, если вы стремитесь иметь функции, которые «делают одно», функция возврата нескольких значений становится менее необходимой, хотя иногда и удобной.
источник
У нас есть универсальный класс Pair, который может хранить один экземпляр A и один экземпляр B. Вероятно, вы можете создать Triplet или Quadruplet таким же образом.
источник
Pair<String, Integer>
, что это значит? что представляют эти значения? Вы не можете знать, не читая реализацию метода.В Java ваша функция будет возвращать объект (или, возможно, null в случае сбоя). Таким образом, несколько частей данных могут быть возвращены.
источник
В Java нет явного способа вернуть несколько переменных, однако есть несколько подходов:
источник