Die Java-Klasse Zur Laufzeit Erweitern

Ich habe die Fähigkeit zum erweitern einer Klasse zur compile-Zeit, aber ich muss in der Lage sein, erstellen Sie eine Instanz der Unterklasse zur Laufzeit über eine Instanz der Oberklasse, wurde bereits instanziiert.

Sollte dies möglich sein, in der Theorie, weil Superklasse Konstruktoren sind bereits aufgerufen wird, bevor der Unterklasse-Konstruktor.

Habe ich keinen Zugang, um das Programm ausreichend zu ändern, um die Instanzierung zu meiner Unterklasse noch zu unterbrechen die original-Instanziierung.

Anwendungsfall: Es gibt ein bestehendes array von Instanzen der Klasse X. Mein code geladen wird, nach. Ich muss überschreiben Sie eine der Methoden, die von einer der Instanzen X mit meiner geladen Unterklasse Y erstreckt X. Das übergeordnete Programm greift auf die Objekte nur durch das array, so dass ich möchten, ersetzen Sie das array-element mit meinem Y-Instanz, aber es muss sich Verhalten, als wenn es instanziiert wurden ursprünglich in diesem array. Ich kann nicht einfach schließen Sie den übergeordneten Instanz und weiterleiten von anrufen, und es gibt schwere Komplikationen mit reinstantiating der Superklasse.

Ich hoffe, dass ist klar.

  • Bitte formulieren Sie die Frage.
  • Können Sie auch ein Beispiel geben, was man eigentlich versucht zu erreichen? Statt Sie einfach Ihre gewünschten, aber vielleicht unmöglich, eine Methode, dies zu tun.
  • Übernehmen Sie vorhandene Zeile "public static Foo foo = new Foo ();", die ich nicht ändern kann. Ich habe "public class Bar extends Foo" und ich will "foo = new Bar (...)", so dass es war, als ob die erste Zeile war "public static Foo foo = new Bar()".
  • Für die, die gerade auf der Suche zu erweitern, eine Klasse zur Laufzeit, und nicht um die änderung der Laufzeit Art der vorhandenen Objekte, siehe Erweiterung der Klasse zur Laufzeit
InformationsquelleAutor JAKJ | 2012-04-06
Schreibe einen Kommentar