Referenz eines existierendes Objektes

bled

Erfahrenes Mitglied
Hallo,

ich wüsste gerne, ob es irgendwie möglich ist, die Referenz eines Objekts zu bekommen, das bereits erzeugt wurde. Gibt es sowas wie eine Liste oder einen Array - mit allen in der aktuellen JVM existierenden Objekten - auf die man zugreifen kann?
Ich möchte von außen eine Methode eines "wo anders" erzeugten Objektes aufrufen. Da dieses Objekt nicht von mir erzeugt wurde, hab ich keine Referenz.
Ich hab mir die Reflecation API angesehen und versucht das so irgendwie hinzubekommen. Allerdings müsste ich da ja eine neue Instanz der Klasse schaffen, damit hätte ich nicht das Objekt, dessen Methode ich eigentlich aufrufen möchte.
Was im Prinzip auch gehen würde, wäre das externe Programm aus meiner Klasse heraus zu starten (über die Reflection API). Allerdings würde ich dann nicht direkt selbst das Objekt erzeugen, von welchem ich die Referenz zum Aufruf der gewünschten Methode brauche. Also wüsste ich auch hier nicht, wie ich weiterkommen könnte.

Ich hoffe, dass das nicht zu wirr ist und man versteht was mein Problem ist. Falls es komplett unklar ist werde ich versuchen es nochmal zu beschreiben. Ich hoffe, dass mir jemand helfen kann. Danke schonmal!
 
Es handelt sich um die gleiche JVM Instanz.
Das Programm ist ein P2P-Netz Simulator. Ich schreibe die Peers für diesen Simulator. Ein kleines Beispiel:
Ich starte den Simulator mit 100 von meinen Peers. Bei der Erzeugung des ersten Peers wird eine GUI geladen, über die ich verschiedene Eigenschaften aller 100 Peers (über Klassenvariablen) variieren kann. Über diese GUI würde ich gerne auch den Simulator steuern (der selbst auch aus einer GUI besteht). Ich möchte schlicht und einfach die run() Methode des Simulators aus meiner GUI heraus aufrufen können. Dadurch spare ich mir des Wechseln zwischen den GUIs, außerdem könnte ich so auch Simulationen mit verschiedenen Peer Parametern automatisieren.

P.S.: Den Sourcecode des Simulators habe ich nicht. Es ist also nicht möglich, den Simulator zu automatisieren. Das wäre wohl höchstens durch Reverse Engineering oder irgendwelchen binären Patches möglich. Ich denke, dass meine Methode (sofern es geht) etwas schmerzfreier wäre.
 
Wie wärs mit einem vernünftigen Entwurf? Globale Variablen gibt es in Java zum Glück nicht. Vernünftige Schnittstelle entwerfen und per RMI miteinander Reden - fertig.

Gruß
OIlie
 
Am Entwurf des Simulators werde ich wohl wenig ändern können.
Das Ganze ist eben nicht ganz so gedacht, wie ich es gerne hätte.
Wenn das nämlich alles schöne und benutzbare Schnittstellen hätte, dann würde ich die mit Sicherheit auch benutzen und nicht irgendwelche Hacks verwenden wollen.
Das Ganze benutze ich ja auch nur als Stütze für die Programmierung eines Peers (es soll die bestmögliche Strategie für Anfragen/Antworten/Weiterleiten gefunden werden). Das gehackte Zeug fliegt am Schluß natürlich wieder raus und dann sieht alles wieder so aus, wie es gedacht ist.
 
Zurück