尝试在抽象的具体实现中覆盖泛型函数时出现类型错误 class
Type error when when trying to override a generic function in a concrete implementation of an abstract class
可以使用以下代码在控制台中重现该错误。
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: error: type mismatch;
found : SomeClass(in object $iw)
required: SomeClass(in method create)
override def create[SomeClass](name: String) = SomeClass(name)
看来这就是您要实现的目标:
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
)
可以使用以下代码在控制台中重现该错误。
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: error: type mismatch;
found : SomeClass(in object $iw) required: SomeClass(in method create) override def create[SomeClass](name: String) = SomeClass(name)
看来这就是您要实现的目标:
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
)