#java #generics #wildcard #comparable
#java #общие #подстановочный знак #сопоставимый
Вопрос:
Я хочу иметь возможность написать что-то вроде этого:
Fruit f1 = new Apple();
Fruit f2 = new Orange();
int res = f1.compareTo(f2);
Реализация сопоставимого интерфейса в классе fruit следующим образом:
public class Fruit<T> implements Comparable<? extends T> {
int compareTo(T other) {
...
}
}
Похоже, не работает.
Я предполагаю, что есть некоторые хитрости с ключевым словом super в подстановочном знаке…
Ответ №1:
Вы слишком усложняете его. Для этого вам не нужны подстановочные знаки:
public class Fruit implements Comparable<Fruit> {
public int compareTo(Fruit other) {
// ...
}
}