什么Java的设计很明确地做,以支持向后兼容性?[关闭]
-
12-09-2019 - |
题
由于 这个问题 是回到四个选民到近,我想再要求的更狭窄的问题,我们希望的社会将更有利。
其特定的设计决定在Java记录要做的方式,他们是不是因为这是优选的设计决定,而是因为它是必要的支持,向后兼容性。
显而易见的情况是仿制药,其无法检测的类型参数在运行时间。(所以你不能做的事:
public void addEmptyMember(List<?> someList) {
if (someList instanceof List<String>) {
((List<String>) someList).add("");
}
}
什么其它这样的例子存在的语言设计和标准API?
解决方案
由于这个问题没有一个唯一正确的答案,我不知道这是否会票价比任何您的其他问题更好。
三,功能特点,我能想到的(除了一般的删除,您已经提到),在向后兼容的名义作出的妥协是新的for循环语法,可变参数,自动装箱和
在新的for循环语法大概应该已经阅读for (item in List)
,但这样做需要做in
为保留字。这将导致大量的向后兼容问题,而不是在至少其中是事实System.in
将必须被重新命名。
可变参数和自动装箱两者加入模糊的可能性。例如,如果传递的对象的阵列,以接受Object...
是否意味着阵列的方法应该作为可变参数阵列或作为可变参数数组的一个元素通过?如果有重载这会变得更加复杂。自动装箱有类似超载的问题含糊不清。以这两个问题的解决方案是让一个规则,解决方法调用时,他们首先与前期1.5规则来解决(即:无自动装箱,并Object...
被视为Object[]
)。只有当该方法调用不能与预1.5规则解决被认为是新的1.5规则。
其他提示
有很多例子中的标准图书馆
- java。awt.颜色都有相同的常数与上下情况下名字
- 所有的否决方法。工具.日给予介绍。工具.日历-什么乱七八糟的!!
- java。工具.列举仍然被用于java。工具.迭代可以取代它
- 类摆接受矢量,作为参数,但可能不得不支持增加java。工具.集合
另外一个是由现在已经过时了多个版本的所有类和方法,但只是不会消失。最值得注意的是各种螺纹方法中,已被弃用。
不隶属于 StackOverflow