Heim >Java >javaLernprogramm >Warum erhalte ich eine ClassCastException, wenn ich in Java ein Objektarray in ein Ganzzahlarray umwandele?
Umwandeln eines Objekt-Arrays in ein ganzzahliges Array: Ein ClassCastException-Rätsel
Im Bereich der Java-Programmierung kann das Umwandeln eines Arrays eines Typs in einen anderen erfolgen führen häufig zu Verwirrung, insbesondere beim Umgang mit Arrays aus Grundelementen und Objekten. Schauen wir uns den folgenden Codeausschnitt genauer an:
<code class="java">Object[] a = new Object[1]; Integer b = 1; a[0] = b; Integer[] c = (Integer[]) a;</code>
Beim Versuch, diesen Code auszuführen, stoßen Sie möglicherweise auf eine ClassCastException in der letzten Zeile. Warum ist das so?
Das Problem liegt in den inkompatiblen Typen der Arrays. Integer[] ist ein Untertyp von Object[], was bedeutet, dass ein Array von Ganzzahlen sicher einem Array von Objekten zugewiesen werden kann. Das Gegenteil ist jedoch nicht der Fall. Object[] kann nicht als Integer[] behandelt werden.
Um dieses Problem zu beheben, können Sie das Object-Array nicht einfach in ein Integer-Array umwandeln. Stattdessen können Sie die Methoden Arrays.copyOf() oder Arrays.copyOfRange() verwenden, um explizit ein neues Integer-Array mit den gewünschten Inhalten zu erstellen.
<code class="java">// Using Arrays.copyOf() Integer[] integerArray = Arrays.copyOf(a, a.length, Integer[].class); // Using Arrays.copyOfRange() Integer[] integerArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);</code>
Alternativ können Sie ein Array von Integern aus dem deklarieren beginnen und es dem Object-Array zuweisen:
<code class="java">Object[] a = new Integer[1]; Integer b = 1; a[0] = b;</code>
In diesem Szenario tritt keine ClassCastException auf.
Um ein Object-Array erfolgreich in ein Integer-Array umzuwandeln, ist es daher unbedingt erforderlich, es zu verwenden die entsprechenden Methoden oder stellen Sie sicher, dass das Objektarray nur Ganzzahlen enthält.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine ClassCastException, wenn ich in Java ein Objektarray in ein Ganzzahlarray umwandele?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!