Hallo,
Ich habe einen Vector v in welchem Objekte, z.B. vom Typ "Book" gespeichert sind. Die Klasse Book hat dann z.B. die Klassenvariabeln Titel, Autor...usw.
Bis jetzt habe ich immer mit einem Typecast auf die Elemente des Vectors zugegriffen...:
(Book)v.elementAt(i).title
(Book)v.elementAt(i).author
...
Nein, du hast so darauf zugegriffen: ((Book)v.elementAt(i)).title
Jetzt die Frage: 1. Wie kann ich auf alle Eigenschaften dieser Objekte zugreifen ohne dass ich deren Namen kenne? (ich weiss also nicht, dass das Objekt book im Vector v die Eigenschaften title und author besitzt.
Diese Frage ergibt keinen Sinn. Wenn du die Klasse (Book) kennst, dann
weißt du auch welche Instanzvariablen sie hat. Wenn sie nur eine
Variable "title" und eine Variable "author" hat, dann hat sie eben
nur diese Variablen. Du mußt nicht zur Laufzeit herausfinden, welche
Variablen sie hat.
Was du willst, ist eine Klasse, zu der man dynamisch Instanzvariablen
hinzufügen kann (oder so ähnlich). Soetwas gibt es nicht.
Verwende stattdessen z.B. eine Hashtable, in der die Buch-Eigenschaften
(title, author usw) abgelegt werden. Die Schlüssel der Hashtable sind
dann eben "title", "author", ...
Was du als jeweiligen Wert verwendest, hängt von deiner
Implementierung ab. Du könntest den Schlüsseln jeweils einen Vector
zuweisen. In diesen schreibst du dann die Werte aller Bücher für die
jeweilige Buch-Eigenschaft.
Grob veranschaulicht:
Hashtable ht = new Hashtable();
Vector titleVector = new Vector();
ht.put("title", titleVector);
titleVector.add("J.K. Rowling");
titleVector.add("Douglas Adams");
ht.put("author", authorVector);
authorVector.add(....);
Du mußt entscheiden, ob dir diese Vorgehen paßt.
Gruß
Slyh