【发布时间】:2015-02-19 01:45:07
【问题描述】:
我有以下情况/代码;
trait Model {
def myField: String
}
case class MyModel(myField: String) extends Model
在为我的模型类创建 DAO 的传统模型中,我想创建一个包含一些通用 CRUD 操作的 DAO 特征。注意...持久性框架在这里无关紧要...问题在于在使用泛型的特征中使用案例类方法。
话虽如此,我想创建以下特征;
trait DAO[M <: Model] {
def insert(model: M): M = {
... do work
m.copy(myField="someval")
}
}
在这种情况下,代码无法编译,因为泛型 M 对成为“案例类”一无所知。如果这里有一些简单的解决方案,可以将泛型声明为需要一种案例吗?或者 Model trait 是否应该声明一个任何扩展类都必须实现的复制方法,并且作为一个案例类来实现它?
【问题讨论】:
-
这能回答你的问题吗?
标签: scala generics case-class