Нет. Если это произойдет, это победит полиморфизм во время выполнения, который является одной из фундаментальных особенностей Java (для методов). Выбранный метод зависит от того, к какому объекту вы его вызываете, а не от того, какой тип ссылки у вас есть на объект (это то, что изменяет приведение).
Вы можете использовать super.toString()
, который будет использовать версию вашего суперкласса (которая может быть или не быть версией Object
, но кажется достаточной для перечисленного вами варианта использования).
У меня есть реализация toString()
, которая опирается на некоторый код, который может вызвать исключение.
Если это так, я бы рекомендовал изменить его, если это возможно. Если это невозможно изменить, то я бы предложил сохранить строковую версию объекта на объекта, как только вы сгенерировали его в toString
, чтобы последующие вызовы были не дорогими (вызывая исключение дорогой). Очистите сохраненную строковую версию, если объект изменчив и что-то, влияющее на toString
, изменено (поэтому оно будет перестроено в следующий раз). В общем, toString
должен быть простым и быстрым.
Вызов версии super
, вероятно, не идеален. Вместо этого, возможно, сгенерируйте строку, включающую смысл исключения.