В простой Java можно переопределить метод класса
программно во время выполнения (или даже создать новый метод)?
Я хочу быть в состоянии сделать это, даже если я не знаю классы во время компиляции.
Что я имею в виду под переопределением во время выполнения:
abstract class MyClass{
public void myMethod();
}
class Overrider extends MyClass{
@Override
public void myMethod(){}
}
class Injector{
public static void myMethod(){ // STATIC !!!
// do actual stuff
}
}
// some magic code goes here
Overrider altered = doMagic(
MyClass.class, Overrider.class, Injector.class);
Теперь этот вызов ...
altered.myMethod();
... вызовет Injector.myMethod () вместо Overrider.myMethod () .
Injector.myMethod () равен статический , потому что после выполнения «магии»
он вызывается из другого экземпляра класса (это Overrider),
(поэтому мы запрещаем доступ к локальным полям).