Heim  >  Artikel  >  Java  >  Warum führt die Umwandlung eines Objekt-Arrays in ein Integer-Array zu einer ClassCastException?

Warum führt die Umwandlung eines Objekt-Arrays in ein Integer-Array zu einer ClassCastException?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 13:03:01970Durchsuche

Why Does Casting an Object Array to an Integer Array Result in a ClassCastException?

Warum die Umwandlung vom Objekt-Array in das Ganzzahl-Array eine ClassCastException auslöst

Das folgende Code-Snippet stößt auf einen Fehler:

Object[] a = new Object[1];
Integer b=1;
a[0]=b;
Integer[] c = (Integer[]) a;

Der Fehler, „java.lang.ClassCastException: [Ljava.lang.Object; kann nicht in [Ljava.lang.Integer;“ umgewandelt werden;“ tritt in der letzten Zeile auf.

Grund:
Das Problem entsteht, weil Sie ein Array von Ganzzahlen nicht als Array von Objekten behandeln können. Während Integer[] ein Untertyp von Object[] ist, ist Object[] kein Untertyp von Integer[].

Daher führt der Versuch, ein Object[] in ein Integer[] umzuwandeln, zu einer ClassCastException.

Alternativer Code:
Um dieses Problem zu beheben, verwenden Sie eine der folgenden Methoden:

Integer[] integerArray = Arrays.copyOf(a, a.length, Integer[].class);
Integer[] integerArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);

Alternativ können Sie die ClassCastException verhindern, indem Sie sicherstellen, dass das Array Elemente sind alle vom Typ Integer, wie im folgenden korrekten Code:

Object[] a = new Integer[1];
Integer b=1;
a[0]=b;
Integer[] c = (Integer[]) a;

Das obige ist der detaillierte Inhalt vonWarum führt die Umwandlung eines Objekt-Arrays in ein Integer-Array zu einer ClassCastException?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn