Имеется класс:
public class Box<T> extends ArrayList<T> {
private T o;
public Box() {
}
public Box(T o) {
super();
this.o = o;
}
T min(T t1, T t2) {
T t3 = null;
int result = t1.compareTo(t2);
return t3;
}
}
В строке int result= t1.compareTo(t2);
выбивает ошибку. Что делать, если я хочу сравнить два объекта, внутри которых уже имплементирован интерфейс Comparable, но хочу и сохранить данный класс обобщённым.
Для того, чтобы пользоваться интерфейсом Comparable
в обобщённом классе вам нужно расширить связанный тип этим интерфейсом.
class Box<T extends Comparable<T>> {}
Если класс имплементирует comparable, то в нем должен быть должен быть определен метод compareTo() вида
@Override
public int compareTo(User user) {
//
}
В вашем случае из-за этого вылетает ошибка. Подробнее здесь
Так как это обобщение <T>
, то он не может сравнить два обьекта пока ты их не инициализируешь одним из типов (byte, double, integer, float, long или short).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Ошибка с MediaView/Media/MediaPlayer, при запуске кода:
Как получить частоты звука на андроидВедь из аудиофайла я получаю массив байтов
Ребят, помогите мне понять, зачем перед функцией писать слово static?