栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么有些语言需要装箱和拆箱?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么有些语言需要装箱和拆箱?

在谈到泛型时,从技术上讲很难包括原始类型吗?

在Java的情况下,这是因为泛型的工作方式。在Java中,泛型是一种编译时技巧,可防止您将

Image
对象放入
ArrayList<String>
。但是,Java的泛型是通过类型擦除实现的:泛型类型信息在运行时会丢失。这是出于兼容性的原因,因为泛型是在Java生命后期才添加的。这意味着,在运行时,an
ArrayList<String>
实际上是一个
ArrayList<Object>
(或更好的:只是
ArrayList
期望并返回
Object
其所有方法)
String
在检索值时自动转换为。

但是由于

int
不是从派生的
Object
,所以您不能将其放在期望的ArrayList中(在运行时)
Object
,也不能将强制
Object
转换
int
为。这意味着
int
必须将原语包装为确实继承自的类型
Object
,例如
Integer

例如,C#的工作原理有所不同。C#中的泛型也会在运行时强制执行,并且不需要装箱

List<int>
。仅当您尝试将值类型存储
int
在引用类型变量(如)中时,C#中的装箱操作才会发生
object
。由于
int
在C#中是从C#继承而来的
Object
,因此编写
objectobj = 2
是完全有效的,但是int将被装箱,这是由编译器自动完成的(没有
Integer
引用类型暴露给用户或其他任何对象)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号