Klassen toArray in Java auflisten - Warum kann ich eine Liste von "Integer" nicht in ein "Integer" Array konvertieren?

8

Ich habe List<Integer> stack = new ArrayList<Integer>();

definiert

Wenn ich versuche, es folgendermaßen in ein Array umzuwandeln:

%Vor%

Ich bekomme diese Ausnahme:

%Vor%

Warum? Es ist genau derselbe Typ - Ganzzahl zu Ganzzahl. Es ist nicht wie in diesem allgemeinen Fall, wenn die Klassen Vater-Sohn-Beziehung

Ich habe versucht, Casting zu machen:

%Vor%

Aber hier bekomme ich diesen Fehler:

%Vor%

Was ist das Problem?

    
Numerator 02.09.2011, 09:52
quelle

3 Antworten

11

Aufgrund des Löschens von Typen kennt die ArrayList ihren generischen Typ zur Laufzeit nicht, so dass Sie nur das allgemeinste Objekt [] erhalten können. Sie müssen die andere ToArray-Methode verwenden , mit dem Sie den Typ des gewünschten Arrays angeben können.

%Vor%     
Thilo 02.09.2011, 09:54
quelle
2

Der Weg dahin ist:

%Vor%

Für den Datensatz ist der Grund, dass Ihr Code nicht kompiliert nicht nur Typ Löschung. Das Problem ist, dass List<T>.toArray() ein Object[] zurückgibt und dies vor der Einführung von Generics getan hat.

    
Stephen C 02.09.2011 09:55
quelle
1

Tun Sie dies stattdessen:

%Vor%

Wir müssen das Array "seed" als Argument an die Methode toArray übergeben.

    
adarshr 02.09.2011 09:55
quelle

Tags und Links