假设我定义了以下特征和类:

trait A {
    val x: Int
}

trait B[T <: A] {
    val a: T
}

class C[T1 <: A, T2 <: B[T1]](b: T2) {

}

然后我按如下方式实现A和B:

case class MyA(x: Int) extends A
case class MyB(a: MyA) extends B[MyA]

现在,当我尝试使用以下类创建C实例时:

val b = MyB(MyA(3))
new C(b)

编译器无法从我的对象推断类型参数,给我以下错误:

推断类型参数[Nothing,MyB]不符合C类的类型参数边界[T1 <:A,T2 <:B [T1]]

难道我不得不明确提供以下类型吗?

new C[MyA, MyB](b)