复合类型很简单,表示多个类型的交集,用with来表示。
    假设我们定义了两个traits:

    1. trait Cloneable extends java.lang.Cloneable {
    2. override def clone(): Cloneable = {
    3. super.clone().asInstanceOf[Cloneable]
    4. }
    5. }
    6. trait Resetable {
    7. def reset: Unit
    8. }

    假如我们需要接受一个对象它即可以是Cloneable又可以是Resetable,那么可以这样定义:

    1. def cloneAndReset(obj: Cloneable with Resetable): Cloneable = {
    2. //...
    3. }