Generics Scala泛型和类型不匹配
以下代码错误带有“类型不匹配”错误,表示FooProcessor应该是Processor[M]Generics Scala泛型和类型不匹配,generics,scala,Generics,Scala,以下代码错误带有“类型不匹配”错误,表示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
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())
}
封闭特征模型
case类Foo扩展模型
特质处理器[M简而言之,你的FooProcessor
是处理器[Foo]的扩展
,并且特定于Foo
。在DelegatingProcessor
中,您需要一个处理器
,它不仅能够处理Foo
,而且能够处理任何有效的模型
Foo处理器
,根本不符合这里的要求。而且-不要试图说服编译器,因为编译器就在这里为防止此类错误,请执行以下操作:-)[Scala newbie here]。但是有多少有效的模型?是否“sealed”不意味着Foo是唯一的一个?是的,但编译器不允许在此处使用该信息。如果要强制执行Foo
是唯一有效的模型,请编写class DelegatingProcessor[M]