Unchecked cast from Component to JComboBox<String>

Skrodde

Aktives Mitglied
Hallo zusammen,
in meiner GUI speichere ich mir eine Liste von Components, die dynamisch zur Laufzeit erzeugt werden. Ich weiß, in welcher Reihenfolge die Elemente in dieser Liste liegen, lese die Liste aus und caste die Objekte auf ihren entsprechenden Typ. Bei
Java:
JTextField nameField = (JTextField) row.get(0);
klappt das auch super und ich kann aus dem Objekt die in das Textfeld eingegebenen Daten auslesen. Folgender Code compiliert auch, allerdings bekomme ich die Titel-gebende "Unchecked cast" Warning:
Java:
JComboBox<String> typeBox = (JComboBox<String>) row.get(1);
Die Warning habe ich mal gegoogelt und dann hier und hier Lösungen gefunden, wie man diese Warning für Listen behebt, aber in meinem Fall handelt es sich ja um ein generisches Objekt, was gecastet wird.
Wie kann ich nun meinen Code sichern, ohne ein
Code:
@SuppressWarnings 'unchecked'
zu nutzen?
Vielen Dank, Gruß, Skrodde
 
Es gibt nur ganz wenige Ausnahmen, bei denen ein unchecked Cast notwendig ist. Normalerweise speichert man sich eine Liste mit genau dem generischen Typen, den man rausholen will. Wenn man bestimmte Methoden haben will, die dieser Typ nicht zur Verfügung stellt, sondern nur sein (gecasteter) Subtyp, dann sollte man diesen als Typ für die Liste nehmen. Wenn das nicht geht, weil man gerne verschiedenste Typen in der Liste haben will, bietet es sich an, ein Interface zu schreiben, das die gewünschten Methoden zur Verfügung stellt. Die Elemente müssen dieses dann implementieren. Und das ist dann der Typ für die Liste. Hoffe, das war einigermaßen verständich. Falls nicht, bitte nachfragen, ich würde dann ein Beispiel zusammenprogrammieren.

P.S. Und zur Ursprungsfrage hat faetzminator die Antwort ja schon geschrieben.
 
Okay, dann kommt da jetzt ein
Code:
@SuppressWarnings("unchecked")
hin und ich lebe damit. Danke für die Aufklärung, Gruß, Skrodde
 

Zurück
Oben