Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Instanzen einer Klasse auslesen

Empfohlene Antworten

Veröffentlicht

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



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

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

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

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

Ok, dann müsste es funktionieren!

Danke nochmal!:cool:

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.