Alle Attribute von Klasse bekommen und ändern

beta20

Top Contributor
Hallo,

ist es irgendwie möglich mittels einer Schleife alle Attribute einer Klasse bekommen und dann den Wert zu ändern?

Ich habe z.B.:
Code:
MyClass {
private String test1 = "Hallo";
private String test2 = "Hallo";
}

Ist es nun irgendwie möglich eine Schleife zu haben, die den Wert von "Hallo" bei allen Attributen der Klasse zu "Wie gehts" zu ändern?
 
Ja es ist möglich alle Attribute eines Objektes per Reflection auszulesen und wenn gewünscht auch anzupassen.

EDIT: zu langsam
 
Ja, habe ich.
Problem ist jedoch, wie ändere ich den Wert bei allen Attributen?
Es ist jedes Mal ein String als Datentyp

Code:
Method[] methods = MyObject.class.getMethods();
for(Method method : methods){
    System.out.println("method = " + method.getName());
}
 
hm - scheint so, dass ich jedes Feld einzeln auflisten muss.
Ist es auch möglich, dass ich eine Schleife (wie oben ) habe, und dann jedes Mal einen neuen Wert zu weise?
 
Also vieles ist möglich. Nur eben musst Du genau überlegen, was Du denn machen willst. Reflection bringt auch einige Performance Einbussen mit sich.
Daher wäre es einmal interessant zu wissen, was Du überhaupt machen möchtest. Wieso willst Du denn so vorgehen? Bist Du sicher, dass man nicht anders vorgehen kann um die Problematik zu vermeiden?

Nur so als kleiner Einwurf.
 
Wir haben dir hier schon das Stichwort "Reflection" gegeben. Jetzt damit das Internet zu durchforsten (per Google zum Beispiel) wäre deine Aufgabe 😉
Die werden wir dir hier nicht abnehmen.

Und bitte lies dir die Links durch und setze dich mit den dort erwähnten Klassen auseinander.
Kopiere dir den Beispiel Code und führe in aus und spiele damit herum. Was für Methoden bieten diesen Klassen der Reflection API an? Was machen sie?
Dann wärst du dazu gekommen das zu finden:
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getDeclaredFields--
 
Du kannst alle Methoden durchlaufen indem du dir einfach alle holst... das sollte aber auf einer der verlinkten Seite schon beantwortete worden sein.

Falls du nicht lesen willst und Englisch kannst:

Alle Methoden kannst du dir zum Beispiel so holen:
Java:
    private Method[] gibtMirAlleMethodenEinerKlasse(Class<?> klasse) {
        return klasse.getMethods();
    }

Beste Grüße,
Jar
 

Zurück
Oben