我有以下类层次结构:
class A
class B extends A
class C extends A
然后,有另一个类接受这些类的实例,并且有一个方法,其中可能有两种模式匹配情况,如下所示:
class D (one: A, two: A) {
def work {
(one, two) match {
case (o, t): (B, B) => ... blablabla
case (o, t): (B, C) => ... blablabla
case _ =>
}
}
}
但是,当它应该解决匹配以支持第二种情况(B, C)
时,它会尝试将其解析为(B, B)
并提出类转换异常C cannot be cast to B
。为什么?该怎么办?我怎么能解决这个问题?