Naberius Geschrieben 31. Oktober 2002 Geschrieben 31. Oktober 2002 Hi Forum, ist es möglich sich die Instanzen einer Klasse wärend der Laufzeit zu holen und zu verarbeiten? Ich habe nämlich das Problem das ich keine static Variablen einsetzen kann aber in einem Background Thread die Attribute aus einer Klasse meines Haupt-Threads manipulieren muss. Ich hoffe ich konnte mich verständlich ausdrücken :WD Zitieren
bigredeyes Geschrieben 31. Oktober 2002 Geschrieben 31. Oktober 2002 class master{ ...... untertan u = new untertan(this); ...... } class untertan{ private master m; untertan(master input){ m=input; } } [/php] dann kannst du von untertan aus den master manipulieren. es gibt bestimmt aber noch 100 andere möglichkeiten. bigredeyes Zitieren
fmarx2000 Geschrieben 31. Oktober 2002 Geschrieben 31. Oktober 2002 Originally posted by Naberius Hi Forum, ist es möglich sich die Instanzen einer Klasse wärend der Laufzeit zu holen und zu verarbeiten? Ich habe nämlich das Problem das ich keine static Variablen einsetzen kann aber in einem Background Thread die Attribute aus einer Klasse meines Haupt-Threads manipulieren muss. Ich hoffe ich konnte mich verständlich ausdrücken :WD Hmmm dem Objekt des Background-Threads im Konstruktor eine Referenz auf eine gültige Instanz der zu manipulierenden Klasse übergeben und in der zu manipulierenden Klasse entsprechende get- und set-Methoden anbieten ? Frank Zitieren
Naberius Geschrieben 31. Oktober 2002 Autor Geschrieben 31. Oktober 2002 @ brigredeyes Wenn ich das so mache legt er doch eine Kopie von diesem Objekt an oder? Ich muss aber sicherstellen das der Background Thread die Memberattribute der konkreten Instanz manipuliert. @fmarx2000 Das würde ich ja gerne machen nur leider habe ich die Namen der Instanzen nicht da sie dynamisch wärend der Laufzeit instanziert werden. Deshalb bräuchte ich eine Klassenmethode die mir alle Instanzen der Klasse zurückgibt. Zitieren
Jaraz Geschrieben 31. Oktober 2002 Geschrieben 31. Oktober 2002 Originally posted by Naberius @ brigredeyes Wenn ich das so mache legt er doch eine Kopie von diesem Objekt an oder? Ich muss aber sicherstellen das der Background Thread die Memberattribute der konkreten Instanz manipuliert. Nein, eine Kopie legt man nur an, wenn du clone() von java.lang.Object aufrufst. Ein neues Object wird nur mit dem new Operator erzeugt. Bei dem Beispiel wird nur eine Referenz auf das master Object übergeben. Es handelt sich also um dasselbe Object. Originally posted by Naberius @fmarx2000 Das würde ich ja gerne machen nur leider habe ich die Namen der Instanzen nicht da sie dynamisch wärend der Laufzeit instanziert werden. Deshalb bräuchte ich eine Klassenmethode die mir alle Instanzen der Klasse zurückgibt. Dann hast du ein Design-Problem. Gruß Jaraz Zitieren
Naberius Geschrieben 31. Oktober 2002 Autor Geschrieben 31. Oktober 2002 Ok, dann müsste es funktionieren! Danke nochmal!:cool: Zitieren
fmarx2000 Geschrieben 31. Oktober 2002 Geschrieben 31. Oktober 2002 Originally posted by Naberius @ brigredeyes Wenn ich das so mache legt er doch eine Kopie von diesem Objekt an oder? Ich muss aber sicherstellen das der Background Thread die Memberattribute der konkreten Instanz manipuliert. @fmarx2000 Das würde ich ja gerne machen nur leider habe ich die Namen der Instanzen nicht da sie dynamisch wärend der Laufzeit instanziert werden. Deshalb bräuchte ich eine Klassenmethode die mir alle Instanzen der Klasse zurückgibt. Dann gib deinem Background thread eine Methode wo du Instanzen während der Ausführung hinzufügen kannst. Der Background-Thread wirft diese an in deine Liste oder so und du kannst sie einzeln herausholen und dann die entsprechende get- oder set-Methode aufrufen. Wenn du von einer Klassenmethode sprichst, dann kann diese nur statisch sein. Frank Zitieren
Naberius Geschrieben 31. Oktober 2002 Autor Geschrieben 31. Oktober 2002 Danke FMarx, stimmt so würde es auch gehen. Aber die andere Lösung ist noch einfacher. Ich dachte nur fälschlicher Weise das die Methodenaufrufe die Parameter per Value übergeben und nicht per Referenz.:WD Zitieren
fmarx2000 Geschrieben 31. Oktober 2002 Geschrieben 31. Oktober 2002 Originally posted by Naberius Danke FMarx, stimmt so würde es auch gehen. Aber die andere Lösung ist noch einfacher. Ich dachte nur fälschlicher Weise das die Methodenaufrufe die Parameter per Value übergeben und nicht per Referenz.:WD Das sollte man schon wissen. Noch eine Anmerkung zu clone(). Per default macht das clone() von Object nur ein shallow - cloning, das heisst assoziierte Instanzen werden NICHT geklont. Frank Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.