Простой вопрос, касающийся динамической Java, это выполнимо, или совершенно невозможно
//you have an instance of classA and it has a method doIT(), for example,
ClassA obj = new ClassA();
//you call method doIT() of ClassA
obj.doIt();
Теперь мне нужно изменить модель ClassA, он становится суперклассом, иего методы и члены помещаются в его подкласс, скажем, в ClassB, поэтому ClassB расширяет ClassA, а метод doIt () переходит в ClassB , все, как обычно, знают, что мне нужно изменить приведенный выше код нижелибо вручную, либо с помощью современных возможностей рефакторинга IDE
//you create an instance of ClassB,
ClassB obj = new ClassB();
//or ClassB obj = new ClassA(); you have little code in the ClassA constuctor, etc.
//then you call a method
obj.doIt();
Я знаю это, но мой вопрос, без внесения в него изменений
ClassA obj = new ClassA();
obj.doIt();
Есть ли какие-нибудь хитростичто заставит его работать с новой моделью? это означает, что я могу как-то вернуть реальный экземпляр ClassB в
ClassA obj = new ClassA();
, но компилятор Java не позволит мне перейти с
obj.doIt();
, поскольку метод doIt () больше не находится внутри ClassA, даже возвращаемая копия является настоящим ClassB,
есть ли хитрость, чтобы обмануть компилятор или заставить идею работать?