как разработать метод класса, который возвращает два разных типа возврата?

Подкласс имеет небольшую логику и возвращает логическое значение true/false или сообщение об ошибке, но в случае любого исключения он попадает в тот же класс и сообщение об ошибке только для уведомления верхнего класса, который раньше отображал сообщение об ошибке в пользовательском интерфейсе. не могу думать о том, как управлять возвращаемым значением подкласса, потому что, если подкласс работает успешно, он возвращает логическое значение true/false, но в случае ошибки он возвращает строковое сообщение об ошибке. В этот момент я обнаружил проблему двух разных типов возвращаемого значения из метода. пожалуйста помогите мне, как я могу решить эту проблему.


person Sameek Mishra    schedule 16.12.2011    source источник


Ответы (5)


У вас есть два варианта возврата объекта

class Status {
   Boolean succesful;
   String errorText;
}

или выдать исключение, если произойдет ошибка

throw new Exception( errorText );
person stacker    schedule 16.12.2011

Почему вы возвращаете код ошибки String? Просто выбросьте свое исключение (возможно, завернутое в какое-то другое) и получите его выше.

person Artem    schedule 16.12.2011

Ваш вопрос не очень ясен.
Насколько я понимаю, вы должны вернуть логическое значение или исключение.
Вы должны указать свое сообщение об ошибке в исключении (см.: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Exception.html#Exception%28java.lang.String%29). Вы также можете вернуть различные исключения, если вам нужно.

person kbdjockey    schedule 16.12.2011

Если ваш подкласс возвращает переменную типа Object, вы можете проверить его тип данных выше.

//Success
Object object = new Boolean();

//Fail
Object object = new String();

if(object instanceOf Boolean) {
//Do something
} else if(object instanceOf String) {
//Do something else
}
person AndroidHustle    schedule 16.12.2011

Рассмотрите возможность использования класса функциональной Java. Это реализация для хранения одного из двух значений.

Или

person John B    schedule 16.12.2011