Java- The meaning of <T extends Comparable<T>>?

This means that the type parameter must support comparison with other instances of its own type, via the Comparable interface.

An example of such a class is provided in the Oracle tutorial Object Ordering. Note the similar pattern to T extends Comparable<T> in the excerpt below:

public class Name implements Comparable<Name> {
   ...
   public int compareTo(Name n) { ... }
}

Java- The meaning of <T extends Comparable<T>>?

a) Comparable <T> is a generic interface (remember it's an "interface" i.e not a "class")

b) extends means inheritance from a class or an interface.

From above-said point#a, it is an interface..(Remember it is an inheritance from an "interface" i.e not from a "class")

c)From above-said both points #a & #b,

here "one interface" extends "another interface".

There should be an interface defined for this class.. just an example here is

interface MinMax<T extends Comparable<T>> { 
    T min(); 
    T max(); 
} 

d) now your class i.e public class RClass {} SHOULD

1# EITHER "implement" this "generic interface" Comparable<T> ..!!!

ex: public class RClass<T> implements Comparable<T>

2# OR create an interface and extend to this "generic interface" Comparable<T> ex:

interface MinMax<T extends Comparable<T>> { 
   T min(); 
   T max(); 
} 
class RClass<T extends Comparable<T>> implements MinMax<T> {
    .....
    .....
}

Here, Pay special attention to the way that the type parameter T is declared by RClass and then passed to MinMax. Because MinMax requires a type that implements Comparable, the implementing class (RClass in this case) must specify the same bound. Furthermore, once this bound has been established, there is no need to specify it again in the implements clause.


Somewhere in that class, the programmer needs to write something like

if(t.compareTo(othert) < 0) {
    ...
}

For that to work, the type T must have a compareTo-method which compares it to another object of type T. Extending Comparable guarantees the existence of such a method, among other things.