Heim >Java >javaLernprogramm >Warum führt die Umwandlung eines Objekt-Arrays in ein Integer-Array zu einer ClassCastException?
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!