What I mean is this:
scala> class Bounded[T <: String](val t: T)
defined class Bounded
scala> val b: Bounded[_] = new Bounded("some string")
b: Bounded[_] = Bounded@2b0a141e
scala> b.t
res0: Any = some string
Why does res0 have type Any and not String? It sure could know that b.t is at least a String. Writing
val b: Bounded[_ <: String] = new Bounded("some string")
works, but it is redundant with respect to the declaration of the class itself.