I have the following hierarchy and I would like to define a list of any Description
but can't figure out its parameter type.
abstract class Context
class Local extends Context
class Browsing extends Context
abstract class Fruit[C <: Context]
class Apple[C <: Context](id: Int) extends Fruit[C]
class Banana[C <: Context](id: Int) extends Fruit[C]
abstract class Description[U[X <: Context] <: Fruit[X]] // U can't be covariant
class Apples extends Description[Apple]
class Bananas extends Description[Banana]
Basically, I would like something like this (which doesn't compile as is):
val l: List[Description[_]] = List(
new Apples,
new Bananas
)
Any way to achieve this?