【发布时间】:2014-07-25 14:34:15
【问题描述】:
我有一个带有伴随对象的案例类。 我在伴生对象中有隐式转换方法。
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)
任何想法为什么以前的代码不起作用?
【问题讨论】:
-
你可以使用
bazz(foo: Bar)。这将触发隐式转换。请注意,如果bazz无论如何都需要Bar,那么bazz(foo)也足够了。
标签: scala casting implicit-conversion implicit