使用Object类型对象进行自动装箱是有效的,但不适用于取消装箱。背后的原因是什么。我的意思是对象类型对象的取消装箱功能不起作用。是实施这种行为的任何特殊原因。因为它支持自动装箱,但不支持unboxing.When,所以它支持自动装箱和取消装箱。c#还支持对象类型对象的自动装箱和取消装箱。
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);
}
}发布于 2015-09-05 18:28:33
解除拳击的效果很好。但只适用于Double、Integer等。iob1是Object类型的,所以不能工作。jls列出了可以被取消/装箱的这里类型。
发布于 2015-09-05 18:30:41
int y = x + iob1;+运算符不能有int和Object (如何向对象添加数字?)请参阅本节来自Java语言规范
如果
+操作符的任一操作数的类型为String,则操作为字符串连接。 否则,+运算符的每个操作数的类型必须是可转换(§5.1.8)为原始数字类型的类型,否则会发生编译时错误。
https://stackoverflow.com/questions/32416361
复制相似问题