Class.asSubclass signature
问题 my question is quite theoretic... This is the signature of Class.asSubclass (Javadoc): public <U> Class<? extends U> asSubclass(Class<U> clazz) Why are wildcard generics used in the return type? From my understanding of generics a better signature could be: public <U> Class<U> asSubclass(Class<U> clazz) because you can for sure cast Class<? extends U> to a more simple Class<U> Bloch in his book "Effective Java" recommends (page 137, item 28): Do not use wildcard types as return types. Rather