Java 在不自动取消装箱的情况下,将强制转换对象简明地转换为基本类型的括号放在何处?
使用自动取消装箱时,此语句将自动工作:Java 在不自动取消装箱的情况下,将强制转换对象简明地转换为基本类型的括号放在何处?,java,type-conversion,primitive-types,autoboxing,Java,Type Conversion,Primitive Types,Autoboxing,使用自动取消装箱时,此语句将自动工作: int myPrimitive = (Integer) doIt(); 但是,如果我想在一行中显式地从整数转换为整数,我必须把括号放在哪里?您可以这样做: int myPrimitive = (int) (Integer) doIt(); 但正如您所说,自动拆箱将为您提供该功能 一个不好的示例显示链强制转换有效(永远不要使用此代码): 链投射的问题是,无论你在哪里使用它,投射都是合法的,你可以移除中介;或者强制转换只会导致ClassCastExcept
int myPrimitive = (Integer) doIt();
但是,如果我想在一行中显式地从整数
转换为整数
,我必须把括号放在哪里?您可以这样做:
int myPrimitive = (int) (Integer) doIt();
但正如您所说,自动拆箱将为您提供该功能
一个不好的示例显示链强制转换有效(永远不要使用此代码):
链投射的问题是,无论你在哪里使用它,投射都是合法的,你可以移除中介;或者强制转换只会导致ClassCastException
。所以你不应该使用它你可以这样做:
int myPrimitive = (int) (Integer) doIt();
但正如您所说,自动拆箱将为您提供该功能
一个不好的示例显示链强制转换有效(永远不要使用此代码):
链投射的问题是,无论你在哪里使用它,投射都是合法的,你可以移除中介;或者强制转换只会导致
ClassCastException
。因此您永远不应该使用它编译器为您解除整数的装箱,或者您自己解除整数的装箱-这是无法避免的
所以你要么做,要么做
int myPrimitive = ((Integer) doIt()).intValue();
或者更简单地说,更改
doIt()
以返回一个int
,因为您似乎想要处理int
s而不是(可以为空)Integer
s。要么编译器为您解算整数,要么您自己解算整数,这是无法避免的
所以你要么做,要么做
int myPrimitive = ((Integer) doIt()).intValue();
或者更简单地说,更改
doIt()
以返回int
,因为您似乎想要处理int
s而不是(可以为空)Integer
s。我的后续操作是“为什么?您想做什么?”:)“我想在一行中显式地将整数转换为int”。你就是这么做的!我的后续内容是“为什么?你想做什么?”:)“我想在一行中显式地从整数转换为整数”。你就是这么做的!从整数到整数的转换是自动取消装箱的一种情况。Integer.intValue()方法将执行显式取消装箱。但我同意一件事:链式铸造=永远不要使用这个!(+1)埃里克·卡尔,我同意这是一个拆箱,但不是自动拆箱。关于自动装箱,这说明显式强制转换/转换称为装箱,而自动装箱将自动完成。从整数到int的强制转换是自动取消装箱的一种情况。Integer.intValue()方法将执行显式取消装箱。但我同意一件事:链式铸造=永远不要使用这个!(+1)埃里克·卡尔,我同意这是一个拆箱,但不是自动拆箱。关于自动装箱,这说明显式强制转换/转换称为装箱,而自动装箱将自动完成。