Si defino el siguiente controlador de eventos genéricosSobrecarga de controladores de eventos genéricos en Scala
trait Handles[E <: Event] {
def handle(event: E)
}
con el tipo de evento como este
trait Event {
}
class InventoryItemDeactivated(val id: UUID) extends Event;
class InventoryItemCreated(val id: UUID, val name: String) extends Event;
¿cómo puedo entonces hacer una sola clase que implementa controladores de eventos para cada de estos eventos? Intenté:
class InventoryListView extends Handles[InventoryItemCreated] with Handles[InventoryItemDeactivated] {
def handle(event: InventoryItemCreated) = {
}
def handle(event: InventoryItemDeactivated) = {
}
}
pero Scala se queja de que un rasgo no se puede heredar dos veces.
Encontré este answer que sugiere una solución, pero parece requerir múltiples clases (una para cada controlador). ¿Es esta realmente la única manera o hay alguna otra construcción de Scala que pueda usar para hacer que una sola clase implemente múltiples manejadores de eventos genéricos (es decir, usando clases de casos, manifiestos u otro constructo de fantasía)?