Alle Objekte und Variablen automatisch ausgeben

guggi229

Mitglied
Hallo zämme

Ich versuche ein kleines Programm zu schreiben, dass mir alle Objekte und Variablen in einer Klasse automatisch ausgibt. Klingt noch ganz einfach. 🙂 Also wenn ich einen String a habe und ein Objekt b, möchte ich getVariable aufrufen und in der Konsole erscheinen beide Objekte bzw. Variabel. Nun ist das soweit einfach. Wenn ich jetzt aber weiter programmiere und weitere Instanzvariablen hinzufügen, möchte ich die Methode getVariable nicht jedes Mal neu anpassen. Ich möchte in der getVariable eine Art Foreach durchlaufen lassen wo mir alle Instanzvariabeln oder Objekte in der Klasse durchläuft und Typ und Name ausgibt. Gibt es eine Methode, die mir alle Objekte oder Variabeln ausgibt? Also wenn ich später eine Instanzvariabel mit einem String c hinzufüge mir beim Aufruf von getVariabeln a,b,c zurückgibt.
Bin für jede Antwort dankbar!

Liebe Grüsse

guggi
 
Hoi Guggi

Wenn du keine speziellen Ansprüche an die Darstellung hast:
- Hast du dir Gson schon angeschaut (konvertiert java-Objekte von und nach json)?
- Hast du dir XStream schon angeschaut (konvertiert java-Objekte von und nach xml)?

Alternativ: ReflectionToStringBuilder von Apache commons.


Freundliche Grüsse
CptSocket
 
Hi,

du könntest eine Liste vom Typ Object erstellen, in die du alle Elemente die du neu erstellst reinpackst.
Dafür schreibst du am Besten eine Methode in der du einfach ein Object reinwerfen kannst und es dann in die Liste gepackt wird.
In der get Methode kannst du dann einfach den Inhalt der Liste ausgeben lassen.

Liebe Grüße
Aphrim
 
Hoi Aphrim

Ich suche eben eine Möglichkeit , dass es automatisch in einer Liste ist. Diese Objekte müsse ja irgendwo vorhanden. sein. Aber danke für deine Antwort! 🙂

Gruss Guggi
 
Hallo,
die einzige Möglichkeit die mir einfällt wäre diese hier:
1. Du erstellst eine ArrayList<Object>
2. Alle Variablen die du erstellst werden dieser Liste hinzugefügt
3. Du erstellst eine Methode welche eine ArrayList<Object> erwartet
4. In dieser Methode wird mit einer for-each schleife jedes Object dieser Liste durchgegangen und anschließend mit der toString() Methode ausgegeben.

So würde es gehen.
 
Natürlich ist das möglich... habt ihr schonmal was von Reflection gehört? :O

Ein Foreach über Class#getDeclaredFields und fertig.

EDIT:
Aber mal im Ernst: so eine Methode ist Schwachsinn. Wenn du wissen willst, welche Variablen zur Laufzeit welche Werte haben, benutze einen Debugger.
 
Zuletzt bearbeitet:

Zurück
Oben