您在哪里将括号简明地将铸造的对象转换为原始类型,而无需自动启动?
-
29-09-2019 - |
题
使用自动箱,此语句将自动起作用:
int myPrimitive = (Integer) doIt();
但是,如果我想明确转换 Integer
到一个 int
在一行中,我必须在哪里放置括号?
解决方案
编译器要么为您拆开整数,要么您自己做 - 这是无法避免的。
所以你需要要么
int myPrimitive = ((Integer) doIt()).intValue();
或更简单,更改 doIt()
返回 int
因为您似乎想处理 int
S而不是(无效) Integer
s。
其他提示
您可以这样做:
int myPrimitive = (int) (Integer) doIt();
但是正如你说的, 自动拆箱将为您提供.
一种 坏的 示例表明链铸造工作(永远不要使用此代码) :
Map notReallyAMap = (Map) (Object) new String();
带有链铸件的事情是,无论您在哪里使用它,铸件都是合法的,您可以删除中介。否则演员将仅引起 ClassCastException
. 。所以 你永远不要使用它.
不隶属于 StackOverflow