Java 在本例中,需要取消装箱时是否使用装箱?
我在理解下面的部分时有些困难 C#和更新版本的Java执行自动装箱和 取消装箱操作可以避免 包装器语法在许多情况下:Java 在本例中,需要取消装箱时是否使用装箱?,java,c#,boxing,unboxing,Java,C#,Boxing,Unboxing,我在理解下面的部分时有些困难 C#和更新版本的Java执行自动装箱和 取消装箱操作可以避免 包装器语法在许多情况下: ht.put(13, 31); int m = (Integer) ht.get(13); 在这里,Java编译器创建隐藏的整数对象来保存 值13和31,因此可以将它们作为引用传递给put最新版本 仍然需要对返回值进行整数强制转换,以确保 13的哈希表条目实际上是一个整数,而不是,比如说,一个 OIOTION点号或String。< /强>泛型,我们将在其中考虑。 第7.3.1节
ht.put(13, 31);
int m = (Integer) ht.get(13);
在这里,Java编译器创建隐藏的整数对象来保存
值13和31,因此可以将它们作为引用传递给put最新版本
仍然需要对返回值进行整数强制转换,以确保
13的哈希表条目实际上是一个整数,而不是,比如说,一个
OIOTION点号或String。< /强>泛型,我们将在其中考虑。
第7.3.1节,允许程序员声明一个仅包含
整数。在Java中,这将消除强制转换返回的需要
价值在C#中,它将消除拳击的需要
intm=(整数)ht.get(13)中代码>,是否使用装箱(通过
取消装箱(分配给int
)期间的(整数)
)
具体来说,(整数)
是否将其操作数转换为
整数
类?但是它的操作数ht.get(13)
已经是一个
Integer
对象,现在赋值需要一个内置值
键入int
。所以我们不需要从Integer
到int
的转换吗
这里ht
时不指定泛型类型,get()
的返回类型是Object
,因此必须将其转换为Integer
。然后,Java将自动将其取消装箱到int
演员阵容本身不进行任何转换。它只是告诉编译器将对象
视为整数
。如果对象实际上不是一个整数
,则运行时将发生类异常
ht
可能会声明为Map
,因此get()
将返回Integer
,强制转换将是多余的
在C#中,它可以声明为Map
的Java等价物。Java不支持将基元类型作为泛型类型参数,因此语法是非法的ht
时不指定泛型类型,get()
的返回类型是Object
,因此必须将其转换为Integer
。然后,Java将自动将其取消装箱到int
演员阵容本身不进行任何转换。它只是告诉编译器将对象
视为整数
。如果对象实际上不是一个整数
,则运行时将发生类异常
ht
可能会声明为Map
,因此get()
将返回Integer
,强制转换将是多余的
在C#中,它可以声明为Map
的Java等价物。Java不支持将基元类型作为泛型类型参数,因此语法是非法的Hashtable#get
的返回类型为Object
。那评论与拳击无关。谢谢。如果它的返回已经是整数
,为什么要将(Integer)
应用于它的返回?在泛型世界中,(Integer)强制转换非常混乱,但这里的想法是将原始返回类型(对象)强制转换为(Integer),然后将其取消装箱为(int)。因此返回的值可能是对整数的引用,但是表达式ht.get(..)
的编译时类型是Object
Object
不能通过赋值表达式转换为int
,您需要强制转换。Hashtable#get
在该示例中的返回类型为Object
。那评论与拳击无关。谢谢。如果它的返回已经是整数
,为什么要将(Integer)
应用于它的返回?在泛型世界中,(Integer)强制转换非常混乱,但这里的想法是将原始返回类型(对象)强制转换为(Integer),然后将其取消装箱为(int)。因此返回的值可能是对整数的引用,但是表达式ht.get(..)
的编译时类型是Object
<代码>对象
不能通过赋值表达式转换为int
,您需要强制转换。