Я пытаюсь написать общую функцию max, которая принимает два Comparable s.
До сих пор у меня
public static <T extends Comparable<?>> T max(T a, T b) {
    if (a == null) {
        if (b == null) return a;
        else return b;
    }
    if (b == null)
        return a;
    return a.compareTo(b) > 0 ? a : b;
}
Это не удается скомпилировать с помощью
The method compareTo(capture#5-of ?) in the type Comparable<capture#5-of ?> is not applicable for the arguments (T)
Я думаю, что это говорит о том, что ? in Comparable<?> может быть интерпретирован как один тип для параметра a, а другой для параметра b, чтобы они не сравнивались.
Как я выкопаю себя из этой дыры?
