Можно в простой Java переопределить метод класса программно во время выполнения (или даже создать новый метод)?Отражение 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() вместо подмены .myMethod().
Injector.myMethod() является статическим , потому что, после того, как делать «магию» он вызывается из другого экземпляра класса (это подмены), (так мы можем предотвратить его от доступа локальных полей).
Не могли бы вы рассказать нам, какие объекты вы хотите переопределить? На первый взгляд ваша проблема напоминает мне о цели парадигмы инъекций зависимостей. – akarnokd