Warum werden Generika vollständig deaktiviert, wenn Sie einen Parametertyp ignorieren?

Im Anschluss andiese FrageZuerst der Hintergrund

Gegeben eine Klasse mit dieser Deklaration:

<code>public class SomeClass<T>
</code>

Und eine Unterklasse, die den generischen Parameter nicht verwendet:

<code>public class SomeSubClass extends SomeClass
</code>

Eine Methode für SomeClass wurde wie folgt deklariert:

<code>protected Map<String, Object> getMap(Object param) {
}
</code>

Wenn die Unterklasse die Methode folgendermaßen aufruft:

<code>Map<String, Object> val = getMap(param);
</code>

Der Compiler beklagt sich im Wesentlichen darüber, dass getMap eine einfache Map zurückgibt und einer generierten Map eine ungeprüfte Zuordnung zugewiesen ist. Warum ist das so? Ist dies eine dokumentierte Erwartungshaltung bei Generics, und gibt es einen Grund dafür?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage