【发布时间】:2014-03-06 21:28:54
【问题描述】:
我有以下代码,它将成为隐式对象的基础:
trait Foo[-T] {
def hello(obj: T)
}
trait Model extends Serializable {
def bar()(implicit foo: Foo[Model]) = { foo.hello(this) }
}
class SerializableFoo[T <: Serializable] extends Foo[T] {
def hello(obj: T) { println("hello from SerializableFoo") }
}
class FOSModelFoo[T <: Model] extends Foo[T] {
def hello(obj: T) { println("hello from FOSModelFoo") }
}
object Foo {
implicit object DefaultFoo extends SerializableFoo[Model]
}
class FOSModel extends Model {
implicit object InnerFoo extends FOSModelFoo
}
当我在 FOSModel 实例上调用 bar() 时,我希望使用 FOSModelFoo,但它碰巧正在调用 SerializableFoo。
我错过了什么?
【问题讨论】:
标签: scala implicit-conversion implicit