Как реализовать общий `max ( Comparable a, Comparable b) `функция в Java?

Я пытаюсь напишите общую функцию 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)

Я думаю, это означает, что ? в Comparable можно интерпретировать как один тип для параметра a и другой для параметра b, так что их нельзя сравнивать.

Как мне выбраться из этой ямы ?

14
задан Duncan McGregor 23 June 2011 в 10:03
поделиться