使用自动箱,此语句将自动起作用:

int myPrimitive = (Integer) doIt();

但是,如果我想明确转换 Integer 到一个 int 在一行中,我必须在哪里放置括号?

有帮助吗?

解决方案

编译器要么为您拆开整数,要么您自己做 - 这是无法避免的。

所以你需要要么

int myPrimitive = ((Integer) doIt()).intValue();

或更简单,更改 doIt() 返回 int 因为您似乎想处理 intS而不是(无效) Integers。

其他提示

您可以这样做:

int myPrimitive = (int) (Integer) doIt();

但是正如你说的, 自动拆箱将为您提供.

一种 坏的 示例表明链铸造工作(永远不要使用此代码) :

Map notReallyAMap = (Map) (Object) new String();

带有链铸件的事情是,无论您在哪里使用它,铸件都是合法的,您可以删除中介。否则演员将仅引起 ClassCastException. 。所以 你永远不要使用它.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top