Why do you think the definition of
Comparable<T> lacks an upper bound on
That is, why is it not defined as:
Comparable<T extends Comparable<?>>
Comparable<T extends Comparable<? super T>>
Wouldn't the latter two proposals be closer to the intended correct use of the interface?
The interface documentation starts with the following sentence, suggesting that it's intended to be used as
T implements Comparable<T>:
This interface imposes a total ordering on the objects of each class that implements it.
Is it just for backward compatibility with pre-generic code?