Java: объявление переменных с множеством общих «ограничений» на них

У меня есть несколько классов в 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 ().

Первая строка не компилируется.

Есть ли способ заставить эту работу работать без указания универсального типа без параметров типа и использования неотмеченных операций? Я также не смог найти пример этого в Интернете.

Приветствую

9
задан H. Guckindieluft 31 January 2011 в 23:58
поделиться