gpt4 book ai didi

java - 使用 'cast' 方法将 Integer 转换为 int 时自动装箱/拆箱

转载 作者:行者123 更新时间:2023-12-02 14:45:20 24 4
gpt4 key购买 nike

这是一个非常简单的情况:我试图将对象类型转换为如下所示的基元:

Object object = Integer.valueOf(1234);

int result1 = int.class.cast(object); //throws ClassCastException: Cannot convert java.lang.integer to int

int result2 = (int)object; //works fine

这是类“Class”的强制转换方法的源代码

public T cast(Object obj) {
if (obj != null && !isInstance(obj))
throw new ClassCastException(cannotCastMsg(obj));
return (T) obj;
}

private String cannotCastMsg(Object obj) {
return "Cannot cast " + obj.getClass().getName() + " to " + getName();
}

为什么会发生这种情况?其他原语也发生同样的情况。

Live Example

最佳答案

cast 对于基元来说并不能很好地工作,因为它不能返回实际基元类型的值,由于 Java 中的泛型......所以它最终会再次装箱反正。如果您不直接分配给 int 值,则也必须将其装箱。

所以基本上,如果你想转换为 int,直接转换即可。

isInstancedocumented对于原语始终返回 false:

If this Class object represents a primitive type, this method returns false.

... cast 可能也应该如此。

关于java - 使用 'cast' 方法将 Integer 转换为 int 时自动装箱/拆箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33052463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com