DISABILITARE ADBLOCK

ADBlock sta bloccando alcuni contenuti del sito

ADBlock errore
risultati trovati: 

DOMANDA

Qual è il significato dell ' avviso Java ?

  

Tipo di sicurezza: il cast da Object a List < Integer > sta effettivamente verificando con l'elenco dei tipi cancellati

Ricevo questo avviso quando provo a trasmettere un oggetto a un tipo con informazioni generiche, ad esempio nel seguente codice:

Object object = getMyList();
List<Integer> list = (List<Integer>) object;

SOLUZIONE

Questo avviso è presente perché Java in realtà non memorizza informazioni sul tipo in fase di esecuzione in un oggetto che utilizza generici. Pertanto, se object è in realtà un List<String>, non ci sarà ClassCastException in fase di esecuzione, tranne fino a quando non si accede a un elemento dall'elenco che non corrisponde al tipo generico definito nella variabile.

Ciò può causare ulteriori complicazioni se vengono aggiunti elementi all'elenco, con queste informazioni di tipo generico errate. Qualsiasi codice che mantiene ancora un riferimento all'elenco ma con le informazioni corrette sul tipo generico ora avrà un elenco incoerente.

Per rimuovere l'avviso, provare:

List<?> list = (List<?>) object;

Tuttavia, tieni presente che non sarai in grado di utilizzare determinati metodi come aggiungi perché il compilatore non sa se stai provando ad aggiungere un oggetto di tipo errato. Quanto sopra funzionerà in molte situazioni, ma se devi usare add, o qualche metodo similmente limitato, dovrai solo subire la sottolineatura gialla in Eclipse (o una SuppressWarning annotazione).

Se ti va lasciaci una tua opinione

L'articolo ti è stato utile ed è tradotto correttamente?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow