我无意中注意到以下内容:
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
值被转换。