我有一个带有伴侣对象的案例类。 我在伴侣对象中有隐式转换方法。
case class Foo(p:T)
object Foo {
implicit def Foo2Bar(foo: Foo): Bar = new Bar(doSmth(foo.p))
}
我有一个类型为Object
的参数的方法。我想在那里传递Bar
的实例。
不幸的是,以下代码没有进行转换但抛出ClassCastException
:
import Foo._
...
val foo = createFoo()
bazz(foo.asInstanceOf[Bar])
与此同时,下一个(更详细的)代码可以完成这项工作:
import Foo._
...
val foo = createFoo()
val bar: Bar = foo
bazz(bar)
为什么以前的代码不起作用的任何想法?
答案 0 :(得分:3)
asInstanceOf
仅处理子类型关系,但定义隐式转换并不会创建子类型关系。