我想创建一个泛型,允许我重用一些函数用于mutliple类 . 理想情况下,我的设计是:
class ColoredMesh[T <: Mesh] extends T
{
def Color(color:ColorRGBA) = {
val vertices = super.getVertexCount
// do something
}
}
class ColoredSphere extends ColoredMesh[Sphere]
class ColoredCylinder extends ColoredMesh[Cylinder]
但是,这会产生编译错误:
错误:(7,38)需要类类型但是T找到类ColoredMesh [T <:Mesh]扩展T
由于技术原因,类似的Java问题Generic class to derive from its generic type parameter导致从泛型类型参数派生的答案是不可能的 . 我想这也适用于Scala . 还有其他一些常见的设计模式如何解决这个问题?
2 回答
您可以使用特征和混合组合:
您可以使用自我类型定义
trait
: