Wie bereits in meinem ersten Thread kurz erwähnt komme ich aus der PHP Welt.
Hier ist z.B. folgendes Möglich (ohne Prüfung auf Richtigkeit):
PHP:
classMyClass{var$myattrib="Mein Attribut";}$my_class=newMyClass();$class_vars=get_class_vars(get_class($my_class));foreach($class_varsas$name=>$value){echo"$name : $value\n";}$attributname="myattrib";$my_class->$attributname=30;echo"Der Wert von MyClass:myattrib = ".$my_class->myattrib;
Um die möglichen Werte eines Objektes zu ermitteln und zu setzen. Die Ausgabe des PHP Skripts sähe demnach wie folgt aus:
Code:
myattrib : 20
Der Wert von MyClass:myattrib = 30
Wie kann man in Java
die Attribute einer Klasse ermitteln
den Wert eines namend Attributs ändern
Da ich mich nebenbei auch etwas mit Spring beschäftige kenne ich zwar die BeanInjection allerdings ist dieses ja nur der Weg "definier Wert in XML - Datei" -> "weise Werte eines Objekts zu". Aber bietet evtl. Spring eine Möglichkeit in der Form:
PHP:
classmyObject{/**
* bind
*
* binds data to object
*
* @access public
* @param $from mixed ein assoziertes Array oder ein Objekt
* @return boolean
*/publicfunctionbind($from){$fromArray=is_array($from);$fromObject=is_object($from);if(!$fromArray&&!$fromObject){$this->addError(get_class($this).'::bind failed. Invalid from argument');returnfalse;}foreach($this->getAttributes()as$k=>$v){if($fromArray&&isset($from[$k])){$this->$k=$from[$k];}elseif($fromObject&&isset($from->$k)){$this->$k=$from->$k;}}returntrue;}}
Reflection heißt das große Zauberwort,
damit findest du die Befehle,
zu einer Map der Werte ist mir nichts allgemein gebräuchliches bekannt,
bei derartigen Bearbeitungen (alle Werte herausholen) kommt man daran aber sicher selber vorbei
denke du bist auf dem Holzweg, PHP und Java sind unterschiedlich genug, wirst mit deinem Lösungsansatz in Java mehr Probleme als Lösungen haben.
Anfänger sollten mit Refelection gar nix zu tun haben, würde dirvorschalgen dir erstmal anzusehen wie man Dinge normalerweise in Java macht.
"Ermitteln und setzen der Attribute eines Objektes" kommt im Normalfall so gar nicht vor, man kennt ja die Attribute eines Objektes zur Entwicklungszeit und braucht diese deswegen gar nicht dynamisch zu ermitteln, setzen von Werten macht man mit Mutatoren, wie zB. sog. "Setter" Methoden.
Nur der vollständigkeits halber... Mit Reflection gehts ohne größere Probleme, allerdings sollte man sich damit vorallem wenn man Java erst lernt nicht damit rumspielen...
Lg
[EDIT]
Hört sich vielleicht etwas "böse" an, dass man das machen kann, allerdings gibts in Java den eingebauten SecurityManager, mit dem man selbst solche Reflections-Zugriffe sehr leicht unterbinden kann.
[/EDIT]