Warum beschwert sich Javac über Generika, die nichts mit den Typargumenten der Klasse zu tun haben? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Java generische Methoden in generischen Klassen 6 answersWas ist ein roher Typ und warum sollten wir ihn nicht verwenden? 14 answers

Bitte lies die Kommentare im Code in der richtigen Reihenfolge, die Details der Frage sind da.
Warum passiert dieser Unterschied?
Bitte geben Sie das JLS an, wenn möglich.

import java.util.*;

/**
 * Suppose I have a generic class
 * @param <T> with a type argument.
 */
class Generic<T> {
    // Apart from using T normally,
    T paramMethod() { return null; }
    // the class' interface also contains Generic Java Collections
    // which are not using T, but unrelated types.
    List<Integer> unrelatedMethod() { return null; }
}

@SuppressWarnings("unused")
public class Test {
    // If I use the class properly (with qualified type arguments)
    void properUsage() {
        Generic<String> g = new Generic<String>();

        // everything works fine.
        String s = g.paramMethod();
        List<Integer> pos = g.unrelatedMethod();

        // OK error: incompatible types: List<String> := List<Integer>
        List<String> thisShouldErrorCompile = g.unrelatedMethod();
    }

    // But when I use the raw type, *ALL* the generics support is gone, even the Collections'.
    void rawUsage() {
        // Using Generic<?> as the type turns fixes the warnings below.
        Generic g = new Generic();

        // OK error: incompatible types: String := Object
        String s = g.paramMethod();

        // WTF warning: unchecked conversion: List<Integer> := raw List
        List<Integer> pos = g.unrelatedMethod();

        // WTF warning: unchecked conversion: List<String> := raw List
        List<String> thisShouldErrorCompile = g.unrelatedMethod();
    }
}
Randnoti

Ich habe dies ursprünglich in IntelliJ IDEA gefunden, aber ich vermute, dass der Compiler mit Javac kompatibel ist, da er beim Kompilieren des obigen Codes mit den folgenden Fehlern / Warnungen übereinstimmt.

$ javac -version
javac 1.7.0_05
$ javac Test.java -Xlint:unchecked
...
$ javac Test.java -Xlint:unchecked -source 1.5 -target 1.5
...