考虑我需要使用的库的设计,无法修复:
trait Foo
class IgnoreMe extends Foo
class A extends Foo { def bar: A = ...}
class B extends Foo { def bar: B = ...}
Run Code Online (Sandbox Code Playgroud)
在我的代码中:
object Stuff {
type Barred = { def bar: Foo }
def doStuff(b:Barred) = b.bar
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,除了Stuff.doStuff将接受任何符合Barred类型的东西,而不仅仅是我想要的Foo的子类型.
我想定义Barred这样它既是Foo的子类型又有一个bar方法,我不能:(帮助赞赏.