我无意中注意到以下内容:
scala> class g[T](val x:T)
defined class g
scala> val obj=new g[Int]('A')
obj: g[Int] = g@1082d45
scala> obj.x
res6: Int = 65
这里发生了什么?类型转换?
我无意中注意到以下内容:
scala> class g[T](val x:T)
defined class g
scala> val obj=new g[Int]('A')
obj: g[Int] = g@1082d45
scala> obj.x
res6: Int = 65
这里发生了什么?类型转换?
这是原语的上转换。如果需要的话,原始值会将自己转换为下一个数值更大的类型。所以val s: Short = (0: Byte)有效。没有任何东西可以转换为Char, 但Char会变成Int, Long, Float, 或者Double如果它需要是正确的参数类型。
这样做的原因主要是因为它是 Java 的做法,但部分是因为出错val d: Double = 0真的很烦人,因为0当然适合 aDouble没有任何问题,而且类型也没有歧义。
也可以看看:
默认情况下启用以下隐式转换。
implicit def char2int(x: Char): Int = x.toInt
在这种情况下,预期的类型是Int。所以Char值被转换。