T extends Comparable

У меня есть следующий класс.

class MyClass<T>

Он использует следующий конструктор.

MyClass(Comparator<T> comparator, Collection<? extends T> data)

И у него есть поле, которое устанавливается в конструкторе следующим образом:

this.data = Collections.unmodifiableCollection(data);

В особом случае, когда T реализует Comparable, я не хочу требовать, чтобы был передан компаратор, поскольку я могу просто использовать естественный заказ. Итак, я подумал, что смогу использовать этот конструктор:

public <T extends Comparable<T>> MyClass(Collection<T> data)

Но очевидно несоответствие типов: невозможно преобразовать из Collection в Collection в приведенном выше операторе присваивания. Я пробовал все что угодно: добавлял больше общих параметров и так далее, но ничего не получалось. Кажется, я не могу указать границу, которая гласит: если у вас есть тип T, который реализует Comparable, сделайте простую вещь.

Есть идеи?

Спасибо.

6
задан SLaks 25 October 2011 в 00:06
поделиться