сравнение и затем сравнение дает ошибку компиляции

Я пытаюсь сортироватьList сотрудников по имени, то возраст, используя Java8ComparatorЯ создал нижеComparator но это дает мне ошибку компилятора

Type mismatch: cannot convert from Comparator<Object> to <unknown>

    Comparator<String> c = Comparator.comparing(s -> s.split("\\s+")[0])
            .thenComparingInt(s -> Integer.parseInt(s.split("\\s+")[1])); //compile error

но это работает, если я явно указываю тип

    Comparator<String> c = Comparator.<String, String> comparing(s -> s.split("\\s+")[0])
            .thenComparingInt(s -> Integer.parseInt(s.split("\\s+")[1])); //works

или создав дваCompartorс и цепь

    Comparator<String> name = Comparator.comparing(s -> s.split("\\s+")[0]);
    Comparator<String> age = Comparator.comparingInt(s -> Integer.parseInt(s.split("\\s+")[1]));
    Comparator<String> cc = name.thenComparing(age); //works

Я указал типComparator<String> на левой стороне, но почему автоматический вывод типа не находит правильный тип и ожидает явно указать.

Может кто-то прояснить это?

Вот код

    String[] arr = { "alan 25", "mario 30", "alan 19", "mario 25" };
    Comparator<String> c = Comparator.<String, String> comparing(s -> s.split("\\s+")[0])
            .thenComparingInt(s -> Integer.parseInt(s.split("\\s+")[1]));
    List<String> sorted = Arrays.stream(arr).sorted(c).collect(Collectors.toList());
    System.out.println(sorted);

выход

[alan 19, alan 25, mario 25, mario 30]

Ответы на вопрос(1)

Ваш ответ на вопрос