У меня есть следующий класс.
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
в приведенном выше операторе присваивания. Я пробовал все что угодно: добавлял больше общих параметров и так далее, но ничего не получалось. Кажется, я не могу указать границу, которая гласит: если у вас есть тип T, который реализует Comparable, сделайте простую вещь.
Есть идеи?
Спасибо.