Rohtypen und generische Methoden kombinieren

Hier ist eine Frage: Diese erste Codeauflistung funktioniert einwandfrei (JDK 1.6 | JDK 1.7):

ArrayList<String> a = new ArrayList<String>();
String[] s = a.toArray(new String[0]);

Wenn ich jedoch das deklariereList Referenz als Rohtyp:

ArrayList a = new ArrayList();
String[] s = a.toArray(new String[0]);

Ich erhalte einen Compilerfehler mit der MeldungString[] ist aber erforderlichObject[] wurde gefunden.

Dies bedeutet, dass mein Compiler die generische Methode als Rückgabe interpretiertObject[] trotz a erhaltenString[] als Argument.

Ich habe das verdoppelttoArray(myArray) Methodensignatur:

<T> T[] toArray(T[] a);

Daher ist es eine parametrisierte Methode, deren Typparameter<T> in keiner Beziehung zu der der Liste (d. h.<E>).

Ich habe keine Ahnung, wie sich die Verwendung eines Rohtyps hier auf die Auswertung parametrisierter Methoden mit unabhängigen Typparametern auswirkt.

Hat jemand eine Idee, warum dieser Code nicht kompiliert wird?Kennt jemand einen Hinweis, wo dieses Verhalten dokumentiert ist?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage