次のクラス階層があります。
class A
class B extends A
class C extends A
次に、これらのクラスのインスタンスを取る別のクラスと、次のように 2 つのケースのパターン マッチングが可能なメソッドがあります。
class D (one: A, two: A) {
def work {
(one, two) match {
case (o, t): (B, B) => ... blablabla
case (o, t): (B, C) => ... blablabla
case _ =>
}
}
}
ただし、2 番目の case を優先してマッチングを解決する必要がある場合(B, C)
は、それを解決しようと(B, B)
し、クラス キャスト例外 that が発生しC cannot be cast to B
ます。なんで?何をすべきか?どうすればこれを回避できますか?