Il est possible en Java simple de remplacer une méthode d'une classe par programmation au moment de l'exécution (ou même de créer une nouvelle méthode)?Réflexion Java: comment substituer ou générer des méthodes lors de l'exécution?
Je veux pouvoir faire ceci même si je ne connais pas connaître les classes au moment de la compilation.
Ce que je veux dire exactement en remplaçant lors de l'exécution:
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);
Maintenant, cette invocation ...
altered.myMethod();
... appellerait Injector.myMethod() au lieu de Overrider .myMethod().
Injector.myMethod() est statique, parce que, après avoir fait la « magie » elle est invoquée de différentes instance de classe (c'est le Overrider), (donc nous l'empêcher d'avoir accès à des champs locaux).
Pourriez-vous nous dire quel genre d'objets vous voulez remplacer? À première vue, votre problème me rappelle l'objectif du paradigme de l'injection de dépendance. – akarnokd