我对以下 Java 代码感到困惑,其中我尝试使用两种方法将 Object 转换为 int:
Object o = 1;
System.out.println((int) o);
Class <?> t = int.class;
System.out.println(t.cast(o));
第二行转换 Object
到int
传统上,并成功。然而,第四个,我希望它在功能上是等效的,会抛出
Exception in thread "main" java.lang.ClassCastException: Cannot cast java.lang.Integer to int
第二行和第四行在功能上有什么区别?为什么一个失败而另一个成功?
最佳答案
Object o = 1;
System.out.println((int) o);
通过这两行代码,你就遇到了装箱和拆箱。第一行将 int
值 1 隐式转换为 Integer
对象。 o
被分配了对此对象的引用。这种隐式转换称为装箱。
在第二行,o
引用的 Integer
对象被取消装箱为 int
,可以将其强制转换为 int
.
关于java - 无法将 java.lang.Integer 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361095/