Если вы не хотите использовать отражение, нет. Java обрабатывает два типа, которые случаются , чтобы объявить один и тот же метод (getInfo()
) как полностью отдельные, с совершенно отдельными методами.
Если у вас есть общность, вы должны использовать общий суперкласс или общий интерфейс, который они оба наследуют. Вы пометили вопрос «дизайн-шаблоны» - шаблон должен использовать инструменты, предоставляемые языком, чтобы показать общность.
Как показывает Eng.Fouad, использование instanceof
в любом случае проще - и лучше, поскольку это означает, что ваш код будет по-прежнему работать с подклассами A
или B
.
Вы можете изолировать это уродство, конечно, поместив его в одном месте - либо с классом фасада, который может быть построен из A
или B
, либо с помощью один метод, который выполняет эту проверку, а затем вызывает ее из нескольких мест.