Es posible en Java simple anular un método de una clase programáticamente en tiempo de ejecución (o incluso crear un nuevo método)?Reflejo de Java: ¿Cómo anulo o genero métodos en tiempo de ejecución?
Quiero ser capaz de hacer esto incluso si yo no sé conozco las clases en tiempo de compilación.
Lo que quiero decir exactamente reemplazando en tiempo de ejecución:
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);
Ahora, esta invocación ...
altered.myMethod();
... llamaría Injector.myMethod() en lugar deOverrider .myMethod().
Injector.myMethod() es estática, porque, después de hacer "magia" que se invoca desde diferentes instancia de clase (es la Overrider), (lo que le impide el acceso a los campos locales).
¿Podría decirnos qué tipo de objetos desea anular? A segunda vista, su problema me recuerda el objetivo del paradigma de inyección de dependencia. – akarnokd