我使用 IntelliJ 将 Java 代码转换为 Scala 代码的功能,通常效果很好。
看来 IntelliJ 用调用替换了所有强制转换asInstanceOf
.
是否有任何有效的用法asInstanceOf[Int]
, asInstanceOf[Long]
等等,对于无法替换的值类型toInt
, toLong
, ...?
我不知道有这样的案例。您可以通过编译类似的类来检查自己发出的字节码是否相同
class Conv {
def b(i: Int) = i.toByte
def B(i: Int) = i.asInstanceOf[Byte]
def s(i: Int) = i.toShort
def S(i: Int) = i.asInstanceOf[Short]
def f(i: Int) = i.toFloat
def F(i: Int) = i.asInstanceOf[Float]
def d(i: Int) = i.toDouble
def D(i: Int) = i.asInstanceOf[Double]
}
并使用javap -c Conv
to get
public byte b(int);
Code:
0: iload_1
1: i2b
2: ireturn
public byte B(int);
Code:
0: iload_1
1: i2b
2: ireturn
...
您可以看到每种情况下都会发出完全相同的字节码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)