Я читаю главу "Дженерики из эффективной Java" [пункт 27].
В этой книге есть этот пункт:
Допустимо, хотя и относительно редко, для параметра типа быть ограниченным некоторым выражением, включающим сам этот параметр. Это то, что известно как рекурсивная привязка типа.
и это:
// Using a recursive type bound to express mutual comparability
public static <T extends Comparable<T>> T max(List<T> list) {...}
Что такое рекурсивная привязка типа и как эта часть кода помогает достичь взаимной сопоставимости?