Kotlin vs. Java: функция вызова с параметром лямбда

У меня есть эта функция, определенная в файле kotlin

fun loadSubmissions(projectId: Long?, completion: (List<Submission>, Exception) -> Unit) { ... } 

И хотите назвать это с Java, как это

 loadSubmissions(project.getProjectId(), (submissions, e) -> { updateSubmissions(submissions); return null; }); 

с

 void updateSubmissions(List<Submission> submissionList) { .. } 

Но это дает мне

 Error:(226, 35) error: incompatible types: List<CAP#1> cannot be converted to List<Submission> where CAP#1 is a fresh type-variable: CAP#1 extends Submission from capture of ? extends Submission 

Поскольку я понимаю, что параметр лямбда-функции кажется List<CAP#> вместо ожидаемого и определенного List<Submission>

Если я преобразую класс в java, я могу легко вызвать эту функцию с помощью обратного вызова лямбда.

Что я делаю не так

Вы не указали тип представления переменных, но появляется сообщение об ошибке, указывающее, что это List<? extends Submission> List<? extends Submission> . Это другой тип из List<Submission> , а ссылки первого типа не могут быть назначены переменным последнего типа (хотя, наоборот, все в порядке).

Это представляет для вас как минимум две проблемы:

  • сама лямбда не является правильной, если она вызывает updateSubmissions() , и
  • тип лямбды, который содержит его типы параметров, несовместим с типом второго параметра loadSubmissions() .

Чтобы исправить это, вам нужно либо расширить типы параметров этих двух методов, либо сузить тип представления переменных.

Intereting Posts
Kotlin: Как можно получить доступ к функциям расширения внутри одного типа извне? как реализовать ограниченный вызов с клиентом блокировки доработки и сопрограммами Kotlin, ориентированный на Java interop: Идиоматический тип для ленивой коллекции? Как вернуться из функции функции Котлина Изменить значение nullability параметра переопределенной функции в kotlin Сериализация KMongo BSONTimestamp Константы в Котлине – какой рекомендуемый способ их создать? Kotlin с JPA: по умолчанию конструктор ад невозможно создать ArrayList внутри подкласса RealmObject kotlin test whith mockito: сравнение Failure В чем разница между get и вызовом в Котлин? Многострочный макет регулярного выражения Как передавать двоичные данные в тело ответа в Spring WebFlux Веб-просмотр Android с kotlin. не работает тип ввода = файл Являются ли числовые операции с использованием Kotlin столь же быстрыми, как эквивалент с Java-примитивами?