在哪里放置括号以简洁地将转换对象转换为原始类型而不自动拆箱?
通过自动拆箱,此语句将自动起作用:
int myPrimitive = (Integer) doIt();
但是,如果我想在一行中显式地从 Integer
转换为 int
,我必须在哪里放置括号?
With autounboxing, this statement will automatically work:
int myPrimitive = (Integer) doIt();
But if I want to explicitly convert from an Integer
to an int
here in a single line, where do I have to put the parentheses?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以这样做:
但正如您所说,自动拆箱将为您提供。
一个坏示例来展示链式转换的工作原理(永远不要使用此代码):
链式转换的问题是,无论您在哪里使用它,要么转换为合法,可以去除中间商;否则转换只会导致 ClassCastException。所以你永远不应该使用它。
You could do this :
But as you said, auto-unboxing will get that for you.
A bad example to show that chain casts work (don't ever use this code) :
The thing with chain casts, is that wherever you use it, either the cast is legit, and you can remove intermediaries; or the cast will simply cause a
ClassCastException
. So you should never use it.要么编译器为您拆箱 Integer,要么您自己拆箱 - 这是无法避免的。
因此,您需要执行以下操作
或更简单地更改
doIt()
以返回int
因为您似乎更想处理int
比(可空)Integer
s。Either the compiler unboxes the Integer for you, or you do it yourself - this cannot be avoided.
So you need to either do
or more simply, change
doIt()
to return anint
since you seem to want to deal withint
s rather than (null-able)Integer
s.