У меня есть такой код:
public class A {
private String id;
//constructor, getter, setter
}
В Java я могу использовать это:
public class C {
@Test
public void t() {
List<A> list = Arrays.asList(new A("1"));
list.sort(Comparator.comparing(A::getId));
Map<String, List<A>> map = list.stream().collect(Collectors.groupingBy(A::getId));
}
}
Вот тест scala (2.12):
class B {
@Test
def t(): Unit = {
val list = util.Arrays.asList(new A("1"))
list.sort(Comparator.comparing(a => a.getId))
list.stream().collect(Collectors.groupingBy(a => a.getId))
}
}
Но в тесте scala list.sort(Comparator.comparing(a => a.getId))
получит две ошибки:
Ошибка: (21, 26) аргументы выведенного типа [com.test.A,? 0] не соответствуютк методу сравнения границ параметров типа [T, U <: Comparable [_>: U]]
Ошибка: (21, 38) несоответствие типов;найдено: java.util.function.Function [com.test.A, String] требуется: java.util.function.Function [_>: T, _ <: U] </p>
и list.stream().collect(Collectors.groupingBy(a => a.getId))
получит эту ошибку:
- Ошибка: (22, 49) отсутствует тип параметра
Как его использовать?