1
任何人都可以解释为什么会发生?斯卡拉在通用函数中类型转换的怪异行为
scala> def as[T](v: Any) = Try(v.asInstanceOf[T])
as: [T](v: Any)scala.util.Try[T]
scala> as[Int]("Hello")
res0: scala.util.Try[Int] = Success(Hello)
scala> res0.map(_ + 1)
res1: scala.util.Try[Int] = Failure(java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer)
这不是拳击,因为你可以用它代替Int
自己的类型,它的工作方式。
似乎并不是名副其实的参数,因为您可以将Try
替换为Option
并且它会相同。
我猜这是关于擦除,但也许有人可以给一个详细的解释?