由于这个问题回到了四票结束,我再次尝试提出一个更狭窄的问题,希望社区会更积极地看待这个问题。
Java 中的哪些特定设计决策被记录为以它们的方式完成,不是因为这是首选的设计决策,而是因为有必要支持向后兼容性。
最明显的情况是泛型,您无法在运行时检测到类型参数。(所以你不能这样做:
public void addEmptyMember(List<?> someList) {
if (someList instanceof List<String>) {
((List<String>) someList).add("");
}
}
语言设计和标准 API 中还有哪些此类示例?