Axel Richter: Warnungen bei Vector<MyType> vs. Vector

Beitrag lesen

Hallo,

Du meinst damit die Warnung "Type safety: The cast from Vector to Vector<MyFirstType> is actually checking against the erased type Vector"?

Ja, genau. Ein Teufelskreis ;-).

So weit ich das verstehe, gibt es einen Unterschied zwischen der Zeit der Kompilierung, wo generische Typen vollständig vorhanden sind, und der Zeit der Ausführung, wo der Unterschied der generischen Typen nicht mehr gegeben ist.

Eine bessere Erklärung ist vielleicht http://www.velocityreviews.com/forums/showpost.php?p=1924646&postcount=4

Ah, jetzt ja ;-). Man muss allerdings den ganzen Thread lesen, um auch den Verweis auf  http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html zu finden.

Es ist also genau andreasrum, als ich dachte. Offensichtlich gibt es gar keine Casting-Routine, die sicher in Collection<E> casten kann, weil es zur Laufzeit gar keine Collection<E> mehr gibt, sondern aus Kompatibilitätsgründen nur, wie gehabt, eine Collection. Die Generics bieten also den zusätzlichen Informationsgewinn zur Typsicherheit nur _bis_ zum Compilieren. Im Bytecode sind sie gar nicht mehr vorhanden.

viele Grüße

Axel