Вот сценарий: у меня есть интерфейс A, 100 классов B0 ... B99, которые реализуют только A и 50 классов C0, C2 ... C98, которые расширяют B0, B2 ... B98.
Классы B работают с базой данных MySQL, выполняя различные операции с таблицами.
Классы C добавляют дополнительную логику к классам B (проверки, привилегии и т. Д.).
Классы B генерируются инструментом, а классы C пишутся кодером.
Клиентское приложение будет использовать классы B и не будет иметь доступа к классам C. Когда метод вызывается для объекта B, клиент сериализует объект и отправляет его приложению сервера вместе с именем метода, который должен быть вызван.
Сервер получит объект B и преобразует его как A. Однако сервер хотел бы выполнить метод, который был переопределен в классе C, если такой класс существует, и метод из B в противном случае. Нормальное поведение будет выполнять метод только из B.
Как сервер сможет это сделать, не имея огромного оператора SWITCH, который приведёт полученный объект к C?
РЕДАКТИРОВАТЬ: Я новичок в Java и не знал, что может сделать отражение. С небольшой помощью Google ( это и это ) я решил свою проблему. Я могу использовать динамическое приведение для того, чего я хочу достичь. Спасибо всем.