Scala类型约束

时间:2017-03-19 08:34:33

标签: scala class

我有以下课程

A

现在我想创建一个像这样的类

B

但问题是我想限制为val s = Seq[Int]() val c = Cllction(s) // should be compile error Play()。在Scala中可以这样做吗?我的意思是,例如,如果我尝试这样创建:

def Play(self, master)

有可能吗?

1 个答案:

答案 0 :(得分:4)

最直接的方法是使用公共基础(标记特征),然后将其用于类型绑定:

trait Col
case class A(vl: Int) extends Col
case class B(name: String) extends Col

case class Cllction[T <: Col](objs: Seq[T])

如果您无法修改AB,其他解决方案将是联合类型,但这需要更复杂的代码或使用库。见How to define “type disjunction” (union types)?