在尝试覆盖抽象类的具体实现中的泛型函数时键入错误

时间:2015-06-21 19:06:44

标签: scala generics abstract

可以使用以下代码在控制台中重现错误。

case class SomeClass(name: String)

abstract class Factory() {
  protected def create[U](name: String) : U
}

class SomeFactory extends Factory() {
  override def create[SomeClass](name: String) = SomeClass(name)
} 
  

< console>:11:错误:类型不匹配;
    发现:SomeClass(在对象$ iw中)     required:SomeClass(在方法创建中)          override def create [SomeClass](name:String)= SomeClass(name)

1 个答案:

答案 0 :(得分:4)

似乎这就是你想要实现的目标:

case class SomeClass(name: String)

abstract class Factory[U]() {
  protected def create(name: String) : U
}

class SomeFactory extends Factory[SomeClass] {
  def create(name: String) = SomeClass(name)
}

(我假设你的意思是SomeFactory扩展Factory