У меня есть следующая иерархия классов:
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
. Почему? Что делать? Как я могу обойти это?