View Full Version : domanda su Cast Java
nuovoUtente86
06-06-2007, 19:20
Castizzando una variabile il compilatore non da nessun avviso ma se ci sono problemi si solleva logicamente la ClassCastException.
Quando però vado a castizzare un Object proveniente dal metodo readObject() di uno stream in compilazione mi appare il seguente avviso:
Note: java uses unchecked or unsafe operations
Note: Recompile with -Xlint:unchecked for details.
compilando
warning: [unchecked] unchecked cast
found: java.lang.Object
required:...........................ecc
Come mai castizzando da uno stream si ha l' avviso mentre normalmente no?
Castizzando una variabile il compilatore non da nessun avviso ma se ci sono problemi si solleva logicamente la ClassCastException.
Quando però vado a castizzare un Object proveniente dal metodo readObject() di uno stream in compilazione mi appare il seguente avviso:
Note: java uses unchecked or unsafe operations
Note: Recompile with -Xlint:unchecked for details.
compilando
warning: [unchecked] unchecked cast
found: java.lang.Object
required:...........................ecc
Come mai castizzando da uno stream si ha l' avviso mentre normalmente no?Succede perché sicuramente stai usando i generics e stai cercando di fare un cast a un tipo come ABC<XYZ>
Il warning in questo caso è inevitabile (salvo sopprimerlo con una apposita annotazione) perché il cast è tale per cui non può essere controllato a runtime (ricordati che i generics sono implementati tramite "erasure" e quindi a runtime non si può stabilire se l'oggetto è realmente ABC<XYZ>).
nuovoUtente86
07-06-2007, 01:24
nell' ultimo caso è successo proprio con i generici,però capita anche utilizzando String o altri Oggetti.
ecco lo fa anche con questa porzione di codice HashMap<String,char[]>mappa=(HashMap<String,char[]>)out.readObject();
si utilizzano sempre i generici ma non a modo dei template del C.
nuovoUtente86
08-06-2007, 14:03
cosa vuol dire "erasure" ?
cosa vuol dire "erasure" ?La "erasure" è il nocciolo, per così dire, dei generics. È il processo per cui il compilatore rimuove tutte le informazioni relative ai generics nel bytecode generato.
http://java.sun.com/docs/books/tutorial/java/generics/erasure.html
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.