对于值类型,asInstanceOf[X] 和 toX 之间有什么区别吗?
我使用 IntelliJ 将 Java 代码转换为 Scala 代码的功能,通常效果很好。
IntelliJ 似乎用对 asInstanceOf
的调用替换了所有强制转换。
对于无法用 toInt
替换的值类型,是否有 asInstanceOf[Int]
、asInstanceOf[Long]
等的有效用法, toLong,...?
I used IntelliJ's ability to convert Java code to Scala code which generally works quite well.
It seems that IntelliJ replaced all casts with calls to asInstanceOf
.
Is there any valid usage of asInstanceOf[Int]
, asInstanceOf[Long]
etc. for value types which can't be replaced by toInt
, toLong
, ...?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不知道有这样的案例。 来检查发出的字节码是否相同,
您可以通过编译类似的类并使用 javap -c Conv
以获取在每种情况下发出的完全相同的字节码。
I do not know of any such cases. You can check yourself that the emitted bytecode is the same by compiling a class like
and using
javap -c Conv
to getwhere you can see that the exact same bytecode is emitted in each case.
嗯,
toInt
和toLong
不是强制转换。类型转换的正确转换确实是asInstanceOf
。例如:Well,
toInt
andtoLong
are not casts. The correct conversion of type casting isasInstanceOf
indeed. For example: