This is a generic method, i.e. its type parametrization is not related to the class' parametrization if any.
The <AnyType extends Comparable<? super AnyType>>
part is the generic parametrization of the method.
The extends
keyword should not be confused with the extends
keyword when declaring a class: in this case it looks more like "is assignable from", in other words, IS-A.
Comparable<T>
is an interface - see docs here.
Your method parametrization will make it so that your method accepts any parameter, as long as its type implements Comparable
.
Specifically, it needs to be a Comparable
of itself or any super-type (that's what the super
part means, as opposed to extends
).
For instance, you can pass a String
argument because String
implements Comparable<String>
(amongst others).