# Felder + Werte einer Klasse auslesen



## Meenzer (28. Jul 2005)

Hallo,

ich lese mir ein einer Schleife alle Felder einer Klassen aus. Das klappt soweit wunderbar. Aber kann ich auch den aktuellen Wert des Feldes mir anzeigen lassen? Leider gibt es keine Methode dafür und ich möchte nicht alle Getter immer einzelen aufrufen müssen. 


```
for(Field field : beanInfo.getClass().getDeclaredFields()) {
  System.out.println(field.getName());  
  // und hier den Wert des Feldes field.getValue() (gibt es leider nicht)
}
```

Danke und Gruß Meenzer


----------



## Roar (28. Jul 2005)

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Field.html#get(java.lang.Object)


----------



## Meenzer (28. Jul 2005)

Das habe ich auch schon versucht, aber ich bekomme immer eine java.lang.IllegalAccessException, mit der ich nichts anfangen kann. Was muss ich dann an meiner Klasse ändern, damit ich den Zugriff bekomme? Den Modifier ändern, was ich schon mal versucht habe. Aber dann kommt der gleiche Fehler wieder. 


```
java.lang.IllegalAccessException: Class gui.GuiDeployDetails can not access a member of class ejbjarInfo.EJBJarEJB with modifiers "private"
	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
	at java.lang.reflect.Field.doSecurityCheck(Field.java:954)
	at java.lang.reflect.Field.getFieldAccessor(Field.java:895)
	at java.lang.reflect.Field.get(Field.java:357) ....................................
```

Gruß Meenzer


----------



## Sky (28. Jul 2005)

Zeig doch erst mal deinen Code... sonst kann Dir keiner sagen, was Du ändern musst!


----------



## Meenzer (28. Jul 2005)

Sorry, hier der Code: Und in der Zeile, in der ich den Wert des Feldes in das Textfeld schreiben möchte. Was mache ich falsch. Laut der Doku sollte ich doch ein Object vom Typ String zurückbekommen, das ich einfach ausgeben. Meine Felder der Klasse sind alle vom Typ String und private.


```
for(Field field : beanInfo.getClass().getDeclaredFields()) {
  try {
    this.txtValue.setText( field.get(field).toString() );
  } catch (IllegalArgumentException e) {
     e.printStackTrace();
  } catch (IllegalAccessException e) {
    e.printStackTrace();
  }				
}
```

Gruß Meenzer


----------



## Roar (28. Jul 2005)

sag field.setAccessible(true);


----------



## Meenzer (28. Jul 2005)

Hallo,

es hat leider nicht funktioniert. Ich weiss nicht warum, aber ich habe es jetzt anderes gelöst. Trotzdem danke für die Hilfe.

Gruß Meenzer


----------

