The difference is, String
class already implements Comparable<String>
, while Number
class doesn't. So, with that bound, T
would be implementing both Comparable<String>
and Comparable<T>
, which is not allowed.
A class cannot extend from or implement different parameterized instantiation of a generic type.