В рамках тривиального упражнения, я пытаюсь реализовать следующий интерфейс Java:Сортировать общий несвязанный Сопоставимые в Scala
public interface Sort {
@SuppressWarnings("rawtypes")
public ArrayList<Comparable> sort(ArrayList<Comparable> table);
}
С класса Java это очень легко достичь. Однако вывод типа Scala кажется проблематичным при работе с Collections.sort()
. Вот моя реализация Scala:
class SortImpl extends Sort {
override def sort(table: util.ArrayList[Comparable[_]]): util.ArrayList[Comparable[_]] = {
util.Collections.sort(table)
table
}
}
А вот ошибка я получаю при запуске некоторых тестов (которые в основном проверить метод с ArrayList<Double>
, ArrayList<Integer>
и т.д.)
Error:(20, 22) inferred type arguments [Comparable[_]] do not conform to method sort's type parameter bounds [T <: Comparable[_ >: T]]
util.Collections.sort(table)
^
Error:(20, 27) type mismatch;
found : java.util.ArrayList[Comparable[_]]
required: java.util.List[T]
Note: Comparable[_] >: T, but Java-defined trait List is invariant in type E.
You may wish to investigate a wildcard type such as `_ >: T`. (SLS 3.2.10)
util.Collections.sort(table)
^
я нашел примеры дело с этот вопрос относится только к определенному классу, например: Sort unbound Comparable in Scala
Кроме того, я не могу изменить интерфейс. Есть ли способ реализовать это в Scala?
Хотя метод работает, его подпись отличается от требуемого интерфейса. –
О, я вижу, сегодня я стараюсь усерднее. – pedrofurla