[英]Autoboxing Unboxing in java using Object
使用Object
类型对象进行自动装箱工作,但它不适用于拆箱。 背后的原因是什么。 我的意思是不使用对象类型对象的拆箱功能。 实施此行为是否有任何特殊原因。 因为它支持自动装箱但不支持拆箱。当涉及到Integer类时,它同时支持自动装箱和拆箱。 并且 c# 还支持 Object 类型对象的自动装箱和拆箱。
class Demo{
public static void main(String args[]){
int x=100;
Object iob1=new Object();
Object iob2=x; //Auto Boxing
System.out.println(iob2.toString());
int y = x + iob1; //Unboxing is not working
int z = x + new Integer(10); // Unboxing is working
System.out.println(y);
}
}
拆箱工作非常好。 但仅适用于Double
、 Integer
等iob1
是Object
类型,因此它无法工作。 jls 列出了可以在此处取消/装箱的类型。
int y = x + iob1;
+
运算符不能有int
和Object
(您希望如何向对象添加数字?)。 请参阅Java 语言规范中的这一部分:
如果
+
运算符的任一操作数的类型为String
,则该操作为字符串连接。否则,
+
运算符的每个操作数的类型必须是可转换(第 5.1.8 节)为原始数字类型的类型,否则会发生编译时错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.