为什么Java集合不能直接存储原始类型?

为什么Java集合不能直接存储原始类型?,第1张

为什么Java集合不能直接存储原始类型?

这是一个Java设计决策,有人认为这是一个错误。容器需要对象,而基元不是从对象派生的。

这是.NET设计人员从JVM中学到的地方,并实现了值类型和泛型,因此在许多情况下都无需装箱。在CLR中,通用容器可以将值类型存储为基础容器结构的一部分。

Java选择在编译器中100%添加通用支持,而没有JVM的支持。JVM本身就是这样,它不支持“非对象”对象。Java泛型允许你假装没有包装器,但是你仍然要付出拳击的性能代价。这对于某些类的程序很重要。

装箱是一种技术折衷,我认为这是泄漏到语言中的实现细节。自动装箱是不错的语法糖,但仍然会降低性能。如果有的话,我希望编译器在自动装箱时发出警告。(据我所知,现在也许是在2010年,我写了这个答案)。

关于拳击的一个很好的解释:为什么有些语言需要装箱和拆箱?

以及对Java泛型的批评: 为什么有人声称Java的泛型实现不好?

在Java的辩护中,很容易向后看和批评。JVM经受了时间的考验,并且在许多方面都是不错的设计。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5146309.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存