Я пытаюсь напишите общую функцию 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, так что их нельзя сравнивать.
Как мне выбраться из этой ямы ?