Am 04.01.2010, 13:15 Uhr, schrieb Günther Frings <pseudotetrade
...@web.de>:
> Hallo,
> ich verliere gerade die Nerven und ihr wahrscheinlich die letzten Haare
> bei folgender Zeile:
> Vector<A> copyOfListeners = (Vector<A>)listeners.clone();
> ich erhalte die Warnung, das das typunsicher ist (unchecked cast). Aber
> wie mache ich das denn typsicher?
Gar nicht. Die Methode macht keine Zusicherung über den Typen, also kann
der Cast aus Sicht der Signatur nicht sicher sein.
Aber was spricht gegen das hier?
final ArrayList copy = new ArrayList(listeners);
> P.S.: In drei von drei Büchern, die ich über Java jetzt mehr oder weniger
> vollständig gelesen habe finde ich stets die Notation Vector, nicht
> Vector<Typ>. Wie kommt es dazu?
Die Typangabe (Generics) gibt es erst ab Java 1.5. Die Bücher scheinen aus
grauer Vorzeit zu stammen, denn auch "Vector" wird in der Regel nicht mehr
gern benutzt.
ArrayList ist idR die bessere Wahl, weil unsynchronisiert. Und wenn man
unsynchronisierte Listen synchronisieren will, legt man das per
Collections.synchronizedList() einen synchronisierten Wrapper drum, das
Vorgehen ist wesentlich generischer.
Wer kein synchronisierte Liste will, die dennoch threadsicher ist, findet
man z.B. eine CopyOnWriteArrayList in java.util.concurrent (allerdings mit
sehr speziellen Laufzeit-Eigenschaften, die es zu beachten gibt).
Siehe dazu auch:
http://www.ibm.com/developerworks/java/library/j-jtp07233.html Gruß,
-Wanja-
--
Erstellt mit Operas revolutionärem E-Mail-Modul: http://www.opera.com/mail/
--- news://freenews.netfront.net/ - complaints: n...@netfront.net ---