Java: L'Extension De La Classe Au Moment De L'Exécution

J'ai la possibilité d'étendre une classe au moment de la compilation, mais j'ai besoin d'être en mesure de créer une instance de cette sous-classe lors de l'exécution à l'aide d'une instance de la super-classe qui était déjà instancié.

Cela devrait être possible en théorie, car superclasse les constructeurs sont déjà appelé avant que le constructeur de sous-classe.

Je n'ai pas accès au programme suffisamment pour modifier l'instanciation de mon sous-classe ni d'interrompre l'origine de l'instanciation.

Cas d'utilisation: Il existe un tableau d'instances de la classe X. Mon code est chargé de après. J'ai besoin de remplacer l'une des méthodes de l'une des instances de X avec mon chargé de la sous-classe Y étend X. Le programme parent accède aux objets que grâce à ce tableau, je veux donc remplacer cet élément de tableau avec mon Y instance, mais il doit se comporter comme si elle était instancié à l'origine dans ce tableau. Je ne peux pas joindre la super-classe de l'instance et le renvoi des appels, et il est difficile de complications avec reinstantiating la super-classe.

J'espère que c'est plus clair.

Veuillez reformuler la question.
Pouvez-vous fournir un exemple de ce que vous êtes en train d'essayer d'accomplir? Au lieu de simplement de votre choix, mais peut-être impossible, façon de le faire.
Supposons ligne existante "public static Foo foo = new Foo();" que je ne peux pas modifier. J'ai "public class Barre s'étend Foo" et je veux faire "foo = Bar (...)", tel que c'était comme si la première ligne est "public static Foo foo = Bar()".
Pour ceux qui cherchent à étendre une classe au moment de l'exécution, et de ne pas changer le moteur d'exécution type d'objets existants, voir Extension de la classe lors de l'exécution

OriginalL'auteur JAKJ | 2012-04-06

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *