У меня есть четыре черты A, B, C и D в типичной иерархии задач с бриллиантами. Я реализовал метод calculate в трейте A, который проверяет экземпляр callerObject, выполняет некоторые вычисления и возвращает объект типа трейта A. Метод calculate успешно может проверить тип экземпляра callerObject, когда callerObject принадлежит типу B или C, но не работает для объекта типа D, и я получаю следующее исключение приведения класса:
java.lang.ClassCastException: packageName.B$$anon$1 cannot be cast to packageName.D
Не могли бы вы предложить путь вперед, как я могу проверить тип объекта из черты D в методе черты A.
PS: я новичок в Scala.