Существует ли механизм scala для упрощения длинных границ полиморфизма? например:
case class RecordTypeX(...) extends A with B with C with D with E with F // defined in my project
case class RecordTypey(...) extends A with B with C with D with E with F // defined in a dependency package
class MyClass1[T <: A with B with C with D with E with F](x:T) {...}
class MyClass2[T <: A with B with C with D with E with F](x:T) {...}
...
val x = RecordTypeX(...)
val y = RecordTypeY(...)
val instance = new MyClass1(x)
val instance = new MyClass1(y)
В идеале было бы неплохо иметь что-то вроде
type Processable=A with B with C with D with E with F
case class RecordTypeX(...) extends Processable // defined in my project
case class RecordTypeY(...) extends A with B with C with D with E with F // defined in a dependency package
class MyClass1[T <: Processable]() {...}
class MyClass2[T <: Processable]() {...}
...
val x = RecordTypeX(...)
val y = RecordTypeY(...)
val instance = new MyClass1(x)
val instance = new MyClass1(y)
Есть какое-нибудь решение?
Примечание. Введение новой черты, объединяющей все остальные черты и расширяющей ее для всех возможных классов, таких как
trait Processable extends A with B with C with D with E with F
, не может быть решением, поскольку я не могу изменить RecordTypeY.