В простой 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), (поэтому мы не позволяем ему получать доступ к локальным полям).