В вашем случае, если у вас есть ошибка, выведите соответствующее исключение.У вас также есть исключения в C ++.
Все остальное является допустимым результатом.
Однако, чтобы ответить на ваш вопрос о том, как вернуть несколько значений.
Подход Iво многих местах используется интерфейс слушателя
interface ErrorOrResult {
void onError(int error);
void onResult(int result);
}
a.method(errorOrResultImpl); // can use an anonymous implementation here.
Как видите, различные типы результатов можно вызывать любое количество раз с различными аргументами.
Вы можете вернуть объект с двумя полями.Это наиболее ориентированный на объект способ.
Если вас беспокоит, что объект создается каждый раз, вы можете передать объект в качестве аргумента.Самым простым из них является int[]
, который вы повторно используете.
int[] results = { 0, 0 };
a.method(results);
Альтернативой является возврат long.
long result = a.method();
// split into two int values.
Или создание метода с состоянием.
int error = a.method();
int result = a.methodResult();
Или вы можете использовать знак, как это делает Collections.binarySearch
int errorOrResult = a.method();
if (errorOresult < 0)
int error = ~errorOrResult;
else
int result = errorOrResult;
Учитывая, что существует слишком много альтернатив, может пройти некоторое время, прежде чем допустимы множественные возвращаемые значения.