Scala泛型和类型不匹配

时间:2011-08-05 15:21:14

标签: generics scala

以下代码错误,出现'type mismatch'错误,说FooProcessor应该是Processor [M]。

sealed trait Model
case class Foo extends Model
trait Processor[M <: Model]

class FooProcessor extends Processor[Foo]

class DelegatingProcessor[M <: Model] extends Processor[M] {
  val delegates = Map[String, Processor[M]]("foo" -> new FooProcessor())
}

如何说服编译器FooProcessor是Processor [Model]的扩展?

1 个答案:

答案 0 :(得分:3)

简短的回答是,您的FooProcessorProcessor[Foo]的延伸,具体针对Foo。在DelegatingProcessor中,您需要一个Processor,它不仅能够处理Foo,还能处理任何有效的ModelFooProcessor根本不适合这里的账单。并且 - 不要试图说服编译器,否则,因为编译器正好在这里防止这种错误: - )