Warum erhalten Sie keinen Compilerfehler, wenn Sie unformatierten Typen generischen Typen zuweisen?

8

Ich habe mir OJCPA-Code-Snippets angeschaut und ich bin verwirrt, warum der Compiler im folgenden Code keinen Fehler ausgibt.

%Vor%

Ich dachte, dass der Compiler List l als einen unformatierten Typ sehen würde und da Generics invariant sind, würde es einen Compilerfehler erzeugen, da es nicht vom Typ List & lt; String & gt;.

Danke für Ihre Hilfe.

    
binarycreations 13.12.2015, 12:31
quelle

1 Antwort

7

Es ist für Rückwärtskompatibilität erlaubt.

Angenommen, Sie rufen eine Legacy-Methode auf, die List von String s zurückgibt, aber sie wurde geschrieben, bevor Generics zu Java hinzugefügt wurden. Daher wird eine rohe List zurückgegeben.

Sie möchten, dass diese Zeile die Kompilierung passiert:

%Vor%

Andernfalls müssen Sie den rohen List -Typ in Ihrem neuen Code verwenden, um diese Methode aufzurufen.

    
Eran 13.12.2015 12:36
quelle

Tags und Links