【发布时间】:2019-01-23 13:13:48
【问题描述】:
我在 scala 中有以下特点:
trait BaseDao {
type T <: BaseModel
def saveModel(model: T)
}
我创建了一个扩展 BaseDao 的类:
class Sample (dynamoDBMapper: DynamoDBMapper) extends BaseDao with LazyLogging {
checkNotNull(dynamoDBMapper)
protected def classType: Class[T] = implicitly[ClassTag[T]].runtimeClass.asInstanceOf[Class[T]]
override def saveModel(model: T): Unit ={
model.validate()
dynamoDBMapper.save(model)
}
现在,当我创建上述类的实例并尝试调用 save 方法时:
val testModel = new TestModel();
testModel.setHashKey("a")
testModel.setSortKey("b")
testModel.setCreatedOn(new Date())
testModel.setModifiedOn(new Date())
sample.saveModel(testModel)
它给出以下错误:
Type mismatch expected: Sample#T, actual: TestModel model class extends BaseModel class
我是 scala 的新手,我无法弄清楚这里出了什么问题?
【问题讨论】: