Я определил трейт Super[A]
с одним абстрактным методом и несколькими конкретными методами, многие из которых просто создают новый экземпляр объекта с некоторыми изменениями. Вот пример:
trait Super[A] { self =>
def abstractMethod: A
def map[B](f: A => B): Super[B] = new Super[B] {
def abstractMethod = f(self.get)
}
}
Теперь я хотел бы создать несколько классов, которые наследуются от Super[A]
без изменения возвращаемого типа каждого конкретного метода.
Какой самый идиоматический способ добиться такого результата?
A
, вы можете сделатьclass Impl extends Super[String]
, если вам нужна реализация для какого-то универсального типаA
- вы можете сделатьclass Impl[A] extends String[A]
. Я не знаю всей задачи, над которой вы работаете, но в качестве альтернативы вы можете рассмотреть классы типов. - person I See Voices   schedule 22.10.2016Super[A]
, где вам (нужно) изменить возвращаемый тип каждого конкретного метода? - person TeWu   schedule 22.10.2016Super
- person Filippo Costa   schedule 22.10.2016