Class Cast Exception in Java: kann nicht gegossen werden

Könnte mir jemand sagen was ist der Fehler in diesem code?

public class Node<T> {
    private int degree;
    @SuppressWarnings("unchecked")
    T[] keys ;
    Node<T>[] children;
    Node(int degree) {
        System.out.println(degree);
        this.degree = degree;
        @SuppressWarnings("unchecked")
        Node<T>[] children = (Node<T>[])new Object[degree * 2];
        @SuppressWarnings("unchecked")
        T[] keys       = (T[])new Object[(degree * 2) - 1];
     }

     public static void main(String[] s) {
        Node<Integer> a = new Node<Integer>(5);
     }
}

Grundsätzlich möchte ich eine selbstreferentielle Art von Sache, die ein Objekt speichert ein array von eigenen Objekten. Ich bin immer diese Fehlermeldung

Exception in thread "main" java.lang.Classcastexception-Fehler: [Ljava.lang.Object; cannot be cast to [Baum.Knoten;

Baum ist mein Paket name.

  • Als Allgemeine Regel gilt... Wenn es einen compile-Fehler, sollten Sie ändern Sie Ihre Philosophie. Auszutricksen die JVM ist wahrscheinlich zum Absturz zu bringen. Wenn es nicht abstürzt, wäre es nicht zu einem Kompilierfehler, es wäre eine Warnung statt.
  • arrays und generics nicht auskommen sehr gut. verwenden ArrayList<T>, wenn Sie können.
  • Nicht verwandt, aber Sie sollten zur Kenntnis nehmen, dass Sie die Erstellung von lokalen Variablen aufgerufen, die Kinder und die Schlüssel in den Konstruktor, nicht Initialisierung von Instanz-Variablen mit dem gleichen Namen. Wahrscheinlich nicht das, was Sie soll.
InformationsquelleAutor | 2011-02-16
Schreibe einen Kommentar