复合类型很简单,表示多个类型的交集,用with来表示。
假设我们定义了两个traits:
trait Cloneable extends java.lang.Cloneable {
override def clone(): Cloneable = {
super.clone().asInstanceOf[Cloneable]
}
}
trait Resetable {
def reset: Unit
}
假如我们需要接受一个对象它即可以是Cloneable又可以是Resetable,那么可以这样定义:
def cloneAndReset(obj: Cloneable with Resetable): Cloneable = {
//...
}