Desde diese Frage wieder vier Stimmen vor dem Ende steht, versuche ich erneut, eine engere Frage zu stellen, die hoffentlich von der Gemeinschaft positiver aufgenommen wird.
Welche spezifischen Design-Entscheidungen in Java so getroffen werden, ist nicht dokumentiert, weil dies die bevorzugte Design-Entscheidung war, sondern weil es notwendig war, um die Abwärtskompatibilität zu unterstützen.
Der offensichtliche Fall sind Generics, bei denen Sie den Typparameter zur Laufzeit nicht erkennen können. (Sie können also nicht tun:
public void addEmptyMember(List<?> someList) {
if (someList instanceof List<String>) {
((List<String>) someList).add("");
}
}
Welche weiteren Beispiele gibt es im Sprachdesign und in der Standard-API?