我知道Java不允许在泛型中使用原始数据类型,即
Listl = new List ();
不被允许.
我已阅读一篇相关文章,其中指出这是为了向后兼容.任何人都可以解释如何不允许在泛型中使用原语保持向后兼容性?我非常感谢一个例子的小解释.
一个子问题:在java中如何实现泛型的主要/次要缺点是什么.
非常感谢您的回复.
正如这里所解释的(带有示例),Java中的泛型仅在编译时存在.在引擎盖下,泛型集合实际上是非泛型集合,其所有内容都存储为Object
.在pre-generics时代(Java 5之前的版本),集合不能包含原语,因为它们无法下载Object
,而它们仍然不能.
回答你的问题:允许泛型集合存储基元不会是一个重大变化,因为先前的泛型集合不存在,因此原始决策与向后兼容性无关.如果他们决定在C#中实现泛型,那么将存在原始泛型集合类型,并且它不会改变先前程序的行为.
但是,为什么他们以这种方式实现泛型的原因可能与这种低能耗方法有关:他们几乎不必为集合添加任何代码来支持这个功能,他们没有必要改变JVM.这提高了可维护性.这听起来不是什么原因,但如果您希望每个未来的JVM能够在结束时仍能执行Java 1.0代码,那么它实际上可能非常重要.