У меня есть несколько классов в java, которые все реализуют интерфейс под названием IdObject (с указанием метода getId ()). Более того, все они также реализуют Comparable <> для себя в качестве параметра типа, поэтому все они сопоставимы сами с собой.
Я бы хотел объявить список таких объектов, заполнить его, затем отсортировать его и вызвать getId () на них. Итак, мой код выглядит так:
List<? extends IdObject & Comparable<?>> objectList = null;
if (foo) {
objectList = new ArrayList<TypeA>();
...
} else if (bar) {
objectList = new ArrayList<TypeB>();
...
}
if (objectList != null) {
Collections.sort(objectList);
for (IdObject o : objectList) {
System.out.println(o.getId());
}
}
В основном моя проблема заключается в первой строке - я хочу указать два «ограничения» для типа, потому что мне нужно первое, чтобы убедиться, что я могу напечатать идентификатор в цикле, и второе, чтобы убедиться, что я могу используйте в списке Collections.sort ().
Первая строка не компилируется.
Есть ли способ заставить эту работу работать без указания универсального типа без параметров типа и использования неотмеченных операций? Я также не смог найти пример этого в Интернете.
Приветствую