我正在尝试将伴随对象的“注册表”放在一起 - 通过将它们存储在使用泛型绑定的列表中。
一个例子是最好的:
trait Foo
case class A() extends Foo
object A
case class B() extends Foo
object B
case class C() extends Foo
object C
trait HasFoos {
def allFoos: List[ _ <: Foo.type]
}
case class FooLookup() extends HasFoos {
def allFoos = List(A,B,C)
}
FooLookup "def allFoos" 上报告的错误是
- 类型不匹配; 发现:A.type 要求:Foo.type
HasFoos.allFoos 需要看起来像什么,或者 List(A,B,C) 需要看起来像什么。
我也试过def allFoos: List[ _ <: Foo]
了;但是它也会出错,而且,我确实想使用“伴随对象”而不是类 - 我确信我需要一些更通用的糖粉,但不确定它需要什么。
提前致谢。