рассмотрите этот дизайн библиотеки, которую я должен использовать и не могу исправить:
trait Foo
class IgnoreMe extends Foo
class A extends Foo { def bar: A = ...}
class B extends Foo { def bar: B = ...}
В моем коде:
object Stuff {
type Barred = { def bar: Foo }
def doStuff(b:Barred) = b.bar
}
Это все хорошо, за исключением того, что Stuff.doStuff будет принимать все, что соответствует типу Barred, а не только те подтипы Foo, которые я хочу.
Я бы хотел определить Barred таким образом, чтобы он был подтипом Foo и имел метод bar, а я не могу :( Помощь оценена.