Guida a ArrayStoreException

1. Panoramica

ArrayStoreException viene generata in fase di runtime in Java quando viene effettuato un tentativo di memorizzare il tipo di oggetto errato in una matrice di oggetti . Poiché ArrayStoreException è un'eccezione non controllata, non è tipico gestirla o dichiararla.

In questo tutorial, dimostreremo la causa di ArrayStoreException , come gestirla e le migliori pratiche per evitarla.

2. Cause di ArrayStoreException

Java genera un'eccezione ArrayStoreException quando proviamo a memorizzare un diverso tipo di oggetto in un array invece del tipo dichiarato.

Supponiamo di aver istanziato un array con il tipo String e in seguito abbiamo provato a memorizzare Integer al suo interno. In questo caso, durante il runtime, viene generata ArrayStoreException :

Object array[] = new String[5]; array[0] = 2;

L'eccezione verrà lanciata alla seconda riga di codice quando proviamo a memorizzare un tipo di valore errato nell'array:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer at com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main(ArrayStoreExceptionExample.java:9)

Poiché abbiamo dichiarato array come Object , la compilazione è priva di errori .

3. Gestire ArrayStoreException

La gestione di questa eccezione è piuttosto semplice. Come ogni altra eccezione, deve anche essere racchiuso in un blocco try-catch per la gestione:

try{     Object array[] = new String[5]; array[0] = 2; } catch (ArrayStoreException e) { // handle the exception }

4. Migliori pratiche per evitare questa eccezione

Si consiglia di dichiarare il tipo di array come una classe specifica, come String o Integer , invece di Object . Quando dichiariamo il tipo di array come Object, il compilatore non genererà alcun errore.

Ma dichiarare l'array con la classe base e quindi memorizzare oggetti di una classe diversa porterà a un errore di compilazione . Vediamolo con un rapido esempio:

String array[] = new String[5]; array[0] = 2;

Nell'esempio precedente, dichiariamo il tipo di array come String e proviamo a memorizzare un numero intero in esso. Questo porterà a un errore di compilazione:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from int to String at com.baeldung.arraystoreexception.ArrayStoreExampleCE.main(ArrayStoreExampleCE.java:8)

È meglio se rileviamo errori in fase di compilazione piuttosto che in runtime poiché abbiamo un maggiore controllo sul primo.

5. conclusione

In questo tutorial, abbiamo appreso le cause, la gestione e la prevenzione di ArrayStoreException in Java.

L'esempio completo è disponibile su GitHub.