Ermitteln und Setzen der Attribute eines Objektes

Stefan Dreis

Mitglied
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:
      class MyClass {
              var $myattrib = "Mein Attribut";
      }

      $my_class   = new MyClass();
      $class_vars = get_class_vars(get_class($my_class));

      foreach ($class_vars as $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:
    class myObject {
    /**
     * bind
     * 
     * binds data to object
     * 
     * @access      public
     * @param       $from   mixed   ein assoziertes Array oder ein Objekt
     * @return      boolean
     */
     public function bind( $from ) {
            $fromArray      = is_array( $from );
            $fromObject     = is_object( $from );

            if (!$fromArray && !$fromObject) {
               $this->addError( get_class( $this ).'::bind failed. Invalid from argument' );
               return false;
            }
                
            foreach ($this->getAttributes() as $k => $v) {
                    if ($fromArray && isset( $from[$k] )) {
                        $this->$k = $from[$k];
                    } else if ($fromObject && isset( $from->$k )) {
                        $this->$k = $from->$k;
                    }
            }
                
            return true;
     }
}

also in der form bind( HashMap<Key, Value> )?

Danke für eure Hilfe
Stefan
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
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
 

Stefan Dreis

Mitglied
Ok, danke erstmal. Hab mir

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 24.3 Attribute, Methoden und Konstruktoren

angesehen. Man kann den Namen und den Typ ermitteln, aber 2 Sachen sind mir noch unklar

  • wie ermittelt den Wert eines Attributes
  • wie findet man private Attribute?

hiermal an einem kleine Pseudocode-Beispiel:

Code:
    class myBaseClass {
            Map<String, String> getAttributes() {
                                           ???
            }
    }

   class myClass extends myBaseClass {
           private  String vorname   = "Stefan"
           private  String nachname = "Dreis"

           getVorname() { return vorname; }
           getNachname() { return vorname; }
   }

   class testClass {
           public void func {
                      myClass c = new myClass();
                      myClass.getAttributes();       // Map{ "vorname" = "Stefan", "nachname" = "Dreis" }
           }
   }
 
S

SlaterB

Gast
das Kapitel ist in der Tat überraschend unvollständig, aber es gibt ja noch die API
Field (Java Platform SE 6)

oder Suchmaschine 'java attribut auslesen reflection' ;)

edit:
im Buch gehts erst unter
> 24.4.2 Die Belegung der Variablen erfragen
weiter


> wie findet man private Attribute?

schaue dir in Class alle Methoden an, die Fields zurückgeben,
eine davon wird schon klappen wenn andere vielleicht auf public beschränkt ist
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Hallo,

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.
 

Nardian

Bekanntes Mitglied
Gar nicht, darum sind sie ja privat. Ob das mit Reflection geht, keine Ahnung...

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]
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
S Bildgröße ermitteln & setSize() übergeben Java Basics - Anfänger-Themen 6
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
H Häufigkeit von Zahlen ermitteln Java Basics - Anfänger-Themen 23
H Palindrom ermitteln Java Basics - Anfänger-Themen 21
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
M Beliebtesten Film ermitteln Java Basics - Anfänger-Themen 6
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
H Bei forEach Index des Elements ermitteln Java Basics - Anfänger-Themen 17
B DHCP-Server Adresse ermitteln Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
V Erste Schritte Potenzen b^n mittels Schleife ermitteln Java Basics - Anfänger-Themen 7
B Anzahl von Stunden / Tage von zwei Datumswerten ermitteln Java Basics - Anfänger-Themen 1
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
O 2 Maximalwerte und Minimalwerte aus Array ermitteln Java Basics - Anfänger-Themen 9
L Fortschritt ermitteln Java Basics - Anfänger-Themen 18
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
N Wahrscheinlichkeiten ermitteln Java Basics - Anfänger-Themen 2
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Schwierigkeitsgrad eines Wortes mit Morsecode ermitteln Java Basics - Anfänger-Themen 18
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
G Größten und kleinsten Wert im Array ermitteln? Java Basics - Anfänger-Themen 7
G Wie kann ich diesen Wert ermitteln? Java Basics - Anfänger-Themen 4
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
D Maximale Teilsumme ermitteln Java Basics - Anfänger-Themen 6
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
S Compiler-Fehler im array Maximum ermitteln Java Basics - Anfänger-Themen 6
V Querprodukt ermitteln Java Basics - Anfänger-Themen 6
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
Joew0815 Int to string und primzahle ermitteln Java Basics - Anfänger-Themen 2
F Jalousie Positionen ermitteln Java Basics - Anfänger-Themen 4
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
C OOP Schwerpunkt eines Dreiecks ermitteln Java Basics - Anfänger-Themen 4
I Zeitraum eines Monats ermitteln und in String ausgeben Java Basics - Anfänger-Themen 1
S Datentypen Dimensionalität eines Arrays ermitteln Java Basics - Anfänger-Themen 2
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
D TreeMap: Höheren Key ermitteln und den Value liefern Java Basics - Anfänger-Themen 3
J In einem Array die größte Zahl ermitteln und Faktorisieren. Java Basics - Anfänger-Themen 5
V Array ermitteln - in Quellcode speichern Java Basics - Anfänger-Themen 15
H JEditorPane: ermitteln, ob Zeichen unterstrichen Java Basics - Anfänger-Themen 4
M Monat der letzen 12 Monate ermitteln Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
H Veränderung eines Objekts ermitteln Java Basics - Anfänger-Themen 6
S Wochentage ermitteln Java Basics - Anfänger-Themen 5
F Den Gewinner der Tordifferenz ermitteln Java Basics - Anfänger-Themen 5
J Eltern-Fenster ermitteln Java Basics - Anfänger-Themen 2
S MP3 Spielzeit mit jid3lib ermitteln? Java Basics - Anfänger-Themen 3
M Größer der eigenen .jar ermitteln Java Basics - Anfänger-Themen 4
M Größe einer Datei via. Link ermitteln Java Basics - Anfänger-Themen 9
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
C Nächsten Montag ermitteln Java Basics - Anfänger-Themen 19
W Position in ArrayList ermitteln Java Basics - Anfänger-Themen 4
B Font Namen ermitteln Java Basics - Anfänger-Themen 7
C least significant bit einer HexMaske für Bitshift ermitteln Java Basics - Anfänger-Themen 2
B Pfad einer .jar im Programm ermitteln Java Basics - Anfänger-Themen 13
H "Index" eines Button ermitteln Java Basics - Anfänger-Themen 7
C Bereits geöffnetes Object ermitteln Java Basics - Anfänger-Themen 5
S ermitteln eines Wertes im StringArray Java Basics - Anfänger-Themen 4
D Ermitteln des kleinsten Messwertes von jedem Tag Java Basics - Anfänger-Themen 15
C Hösten Wert aus mehren Listen ermitteln Java Basics - Anfänger-Themen 2
D Input/Output Pfad richtig ermitteln Java Basics - Anfänger-Themen 12
P Dateigröße von Ordnern ermitteln Java Basics - Anfänger-Themen 8
T Enum - Key als Value ermitteln Java Basics - Anfänger-Themen 7
J den x und y Wert beim klicken der Maus ermitteln Java Basics - Anfänger-Themen 2
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
G Sekunden bis zum Ende der aktuellen Kalenderwoche ermitteln! Java Basics - Anfänger-Themen 3
F Substring mittels RegEx ermitteln/ersetzen? Java Basics - Anfänger-Themen 2
M Datentypen Generics: Exacten Typ ermitteln Java Basics - Anfänger-Themen 6
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
M Größe einer Konsole ermitteln Java Basics - Anfänger-Themen 2
c_sidi90 Größe von Dateien aus File Array ermitteln Java Basics - Anfänger-Themen 12
P Ermitteln aller perfekten Zahlen Java Basics - Anfänger-Themen 12
D Pfad zu "Eigenen Dateien" ermitteln Java Basics - Anfänger-Themen 8
A Relativer Pfad zu einem File ermitteln Java Basics - Anfänger-Themen 2
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
M Datentypen Wrapperclass eines Primitives ermitteln Java Basics - Anfänger-Themen 4
StrikeTom Shift + pfeiltaste ermitteln Java Basics - Anfänger-Themen 3
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
A Aktueller Pfad des Programms (.jar) ermitteln Java Basics - Anfänger-Themen 10
P Externe IP ermitteln? Java Basics - Anfänger-Themen 5
J Das Maximum einer Liste ermitteln Java Basics - Anfänger-Themen 8
S Klassennamen ermitteln Java Basics - Anfänger-Themen 10
R Stoppuhr: Zeit ermitteln und übergeben - Variable static?? Java Basics - Anfänger-Themen 6
T PixelFarbe ermitteln und in Fenster zeichnen Java Basics - Anfänger-Themen 12
W Average-Color (Durchschnittsfarbe eines Bildes ermitteln) Java Basics - Anfänger-Themen 16
D Ermitteln der Anzahl gleicher Nachkommastellen 2er Zahlen Java Basics - Anfänger-Themen 9
P Zeilenanzahl einer *.txt ermitteln Java Basics - Anfänger-Themen 6
B Teiler einer Zahl ermitteln Java Basics - Anfänger-Themen 12
H Dimensionen eines 2D-Arrays ermitteln Java Basics - Anfänger-Themen 5
Z Gesperrte JTable auslesen bzw feldposition ermitteln Java Basics - Anfänger-Themen 10
S Anzahl der Wochen eines Monats ermitteln Java Basics - Anfänger-Themen 19
F Hüllklassentyp einer Referenzvar ermitteln? Java Basics - Anfänger-Themen 3
G IP-Adresse ermitteln??? Java Basics - Anfänger-Themen 3
K Dateipfad ermitteln Java Basics - Anfänger-Themen 4
J OS Loginname ermitteln Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben