Скажем, у меня есть класс со многими общедоступными методами:
public class MyClass {
public void method1() {}
public void method2() {}
(...)
public void methodN() {}
}
Теперь я хотел бы создать класс-оболочку, который делегировал бы все методы wrapped instance (delegate):
public class WrapperClass extends MyClass {
private final MyClass delegate;
public WrapperClass(MyClass delegate) {
this.delagate = delegate;
}
public void method1() { delegate.method1(); }
public void method2() { delegate.method2(); }
(...)
public void methodN() { delegate.methodN(); }
}
Теперь, если у MyClass много методов, мне нужно будет переопределить каждый из них, который является более или менее тем же кодом, который просто "делегирует". Мне было интересно, можно ли сделать магию для автоматического вызова метода в Java (поэтому класс Wrapper должен был бы сказать "Эй, если вы вызываете метод на мне, просто перейдите к делегированию объекта и вызовите этот метод на нем).
BTW: я не могу использовать наследование, потому что делегат не находится под моим контролем. Я просто получаю его экземпляр из другого места (в другом случае, если MyClass был окончательным).
ПРИМЕЧАНИЕ. Я не хочу генерировать IDE. Я знаю, что могу сделать это с помощью IntelliJ/Eclipse, но мне любопытно, можно ли это сделать в коде.
Любые предложения о том, как добиться чего-то подобного? (ПРИМЕЧАНИЕ: я, вероятно, смогу сделать это на некоторых языках сценариев, таких как php, где я мог бы использовать магические функции php для перехвата вызова).