Если я определяю следующее общий обработчик событийПерегрузка общих обработчиков событий в Scala
trait Handles[E <: Event] {
def handle(event: E)
}
с событием типа как этого
trait Event {
}
class InventoryItemDeactivated(val id: UUID) extends Event;
class InventoryItemCreated(val id: UUID, val name: String) extends Event;
как я тогда сделать единственный класс, который реализует обработчик событий для каждого этих событий ». Я пробовал:
class InventoryListView extends Handles[InventoryItemCreated] with Handles[InventoryItemDeactivated] {
def handle(event: InventoryItemCreated) = {
}
def handle(event: InventoryItemDeactivated) = {
}
}
но Скала жалуется, что черта не может быть унаследована дважды.
Я нашел это answer, который намекает на решение, но он швы требует нескольких классов (по одному для каждого обработчика). Является ли это единственным способом или существует какой-то другой конструктор Scala, который я могу использовать, чтобы сделать один класс реализующим несколько общих обработчиков событий (например, используя классы case, манифесты или какую-либо другую причудливую конструкцию)?