这不是关于泛型如何在Java中工作,关于Java 5通用支持差异,类型擦除等的前/后的问题......在SO和Internet上的一般文档中有很多关于这些主题的问题。如果你愿意,这个问题更多的是关于Java语言考古学,因为我想知道为什么完整的泛型支持没有包含在v1.0的Java中,我们不得不等到Java 5为了得到支持:
List<String> myList = new ArrayList<String>()
从v1.0开始我们可以这样写:
String[] myArray = new String[]{"some", "random", "strings"}
因此,除非我遗漏了一些明显的东西,否则我无法理解为什么阵列所具有的相同编译时类型安全功能无法扩展到任何其他容器(集合或其他)可以节省我们在未来几年里,所有的痛苦都会很多。
这是一个刻意的设计决定吗?如果是这样,基于什么理由?
答案 0 :(得分:1)
这是一个刻意的设计决定吗?如果是这样,基于什么理由?
我听到它的方式 1 ,这个决定是务实的。虽然Java团队希望在Java 1.0发布之前进一步优化语言,但是有一种“业务需求”来发布Java状态。人们认为(当时)在开发人员面前有一个短暂的机会来获得一种新语言。据认为,如果他们推迟了,那么对另一种语言/公司的新语言需求就可以了。
1 - 我不记得是谁听到了这个,但这与你今天在Java中看到的一些设计异常一致;例如不一致的名称方法,应该是接口的类,奇怪的System.in/out/err静态等等。
答案 1 :(得分:-1)
产品开发通常具有生命周期。产品的功能实现需要花费时间进行研究,设计,实施和维护。日复一日,产品逐渐受到新功能的推动。我们不能问为什么早期版本中没有后续功能。这是我们的常识,可以为这个问题提供答案,