Wie man ein bestimmter Typ-Objekt aus einem Objekt Vector in Java
Habe ich Folgendes Vector
und zur Laufzeit möchte ich weitergeben es eine Integer
, Character
oder Float
:
public static Vector<Object> interestingValues = new Vector<Object>();
Gleichzeitig möchte ich, um eine Integer
, Float
oder Character
aus, so gibt es zwei Dinge:
-
Wird Sie behalten die spezifischen
Integer
/Float
/Character
geben Sie in derObject
Vector
, oder Sie werden alle gespeichert werden, in form vonObject
? -
Wie kann ich abrufen
Integer
Objekte aus dieserVector
?
- Wenn Sie eine Sammlung von gemischten Typen, seine in der Regel eine bessere Idee, eine Klasse zu definieren, wobei die Felder dieser Typen.
- Vector ist eine alte Klasse, Sie sollten die neue Java Collections Framework. Siehe download.oracle.com/javase/tutorial/collections/index.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Casting:
In Fall, dass Sie mehrere Typen von Objekten im Vektor, den Sie kontrollieren konnte, ob der Typ mit
instanceof
:Die Dritte Sache, die Sie tun können, um zu vermeiden, ov casting von Objekten auf einen bestimmten Typ einer typisierten
Vector
:Versuchen Sie es mit dem instanceof und casting :
Den
Vector
speichert nur eine Referenz auf das Objekt, nicht das Objekt selbst.Da jedoch die (nicht-generische) Klasse definiert ist als die Speicherung von Referenzen auf
Object
Sie haben zu werfen die gespeicherten Referenzen zurück zu den ursprünglichen Typ, bevor Sie Sie verwenden:Dass ist natürlich nicht verlangen, dass Sie im Voraus wissen, welche Besondere Art gespeichert ist, in dem element...
Könnten Sie tun:
Haben Sie zu Durchlaufen und zu überprüfen für
Integer
Instanzen, zum Beispiel:Würden Sie haben zu prüfen, die Klasse des Objektes:
Ist das nicht eine gute design obwohl. Möchten Sie vielleicht zu prüfen, die Speicherung der Objekte in verschiedene Vektoren oder mit einem comming-Darstellung (z.B. String) zusammen mit der Konvertierung.
Edit:
Seit
Float
,Integer
und wie alle verlängernNumber
Sie könnte auch überprüfen Sie einfach fürobj instanceof Number
und rufen Sie dannintValue()
,doubleValue()
etc. auf dem gegossenen Objekt, wenn alles, was Sie brauchen, ist die Nummer und nicht der Typ.instanceof prüft die "isa" releationship. Wenn Sie wollen 100% sicher sein, von der Klasse, verwenden getClass(). hier ist eine langatmige Beispiel:
Caveat emptor: ich nicht complile den obigen code.