У меня есть этот фрагмент кода на Java (это MCVE; реальный код сложнее, но имеет ту же проблему):
enum StatusEnum { A, B, C; }
[...]
final static Set<String> names = Arrays.asList(StatusEnum.values())
.stream().map(StatusEnum::name).collect(Collectors.toSet());
IntelliJ дал мне следующее автоматическое преобразование в Kotlin:
internal val names = Arrays.asList(*StatusEnum.values())
.stream().map<String>(Function<StatusEnum, String> { it.name })
.collect<Set<String>, Any>(Collectors.toSet())
К сожалению, это имеет ошибки компиляции:
- Функция интерфейса не имеет конструкторов
- Ошибка определения типа. Ожидаемое несоответствие типов: предполагаемый тип — Collector!>! но Коллектор!>! ожидалось
- Неразрешенная ссылка: это
Это моя самая первая попытка конвертировать код в Kotlin. Я просмотрел раздел документации Функции и лямбда-выражения. До сих пор не ясно, что здесь происходит и как это исправить.