Zum Inhalt springen

Instanzen einer Klasse auslesen


Empfohlene Beiträge

Geschrieben

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

Geschrieben



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

Geschrieben
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

Geschrieben

@ 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.

Geschrieben
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

Geschrieben
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

Geschrieben

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

Geschrieben
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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...