Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用'将整数强制转换为int时自动装箱/取消装箱;铸造';方法_Java_Casting_Autoboxing - Fatal编程技术网

Java 使用'将整数强制转换为int时自动装箱/取消装箱;铸造';方法

Java 使用'将整数强制转换为int时自动装箱/取消装箱;铸造';方法,java,casting,autoboxing,Java,Casting,Autoboxing,下面是一个非常简单的例子:我试图将对象类型强制转换为如下基本体: 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”的cast方法的源代码 public

下面是一个非常简单的例子:我试图将对象类型强制转换为如下基本体:

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”的cast方法的源代码

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();
}
为什么会这样?其他原语也是如此


cast
不能很好地用于原语,因为它不能返回实际原语类型的值,这是由于Java中的泛型。。。所以不管怎样,它最终还是会再次拳击。如果您没有直接赋值给
int
值,那么出于这个原因也必须将其装箱

因此,基本上,如果您想转换为
int
,只需直接强制转换即可

isInstance
对于原语总是返回
false

如果此
对象表示基元类型,则此方法返回
false


cast
可能也应该如此。

好吧,
isInstance
的文档指定:“如果这个类对象代表一个基元类型,这个方法返回false。”所以这并不奇怪,但是
cast
文档应该说它对于基元类型总是失败的。所以我不应该对基元使用cast方法,而应该直接使用(int)?@AnmolGupta:是的,基本上。