Why does scala require existential types to restrict a generic bound?
问题 With the following class hierarchy: trait Provider[A] { def get(): Seq[A] } abstract class ProviderImpl[A] extends Provider[A] { final override def get(): Seq[A] = Seq() } trait HasX { def getX: Int } trait RefinedProvider[A <: HasX] extends Provider[A] class TypedProviderImpl extends ProviderImpl[HasX] with RefinedProvider[HasX] I want to be able to do this: val provider: RefinedProvider[_] = new TypedProviderImpl() provider.get() map (_.getX) But it doesn't work, because the return type of