«Несоответствие типов» при переносе лямбда-метода с Java на Kotlin - PullRequest
0 голосов
/ 13 мая 2019

Я перевожу класс из Java в Kotlin, но конвертер Kotlin неправильно конвертирует лямбда-выражения для меня.

Вот мой метод в Java:

public static <V> void someMethod(Creator<SomeClass, V> creator) {

Вот мой интерфейс Creator:

public interface Creator<SomeClass, V> {
    T getPathFromUri(O o);
}

Вот как я реализую это в Java:

someMethod(someVariable -> ClassA.methodA(someVariable.methodB()));

Однако, когда я конвертирую это в Kotlin, я получаю:

someMethod( { someVariable -> ClassA.methodA(someVariable.methodB()) })

Но я получаю ошибку:

Type mismatch.
Required: Creator<SomeClass, V>
Found: (???) -> ???

Я не понимаю, какая часть имеет неправильный синтаксис. Я пытался реализовать это несколькими способами из предложений на других постах, но все равно получаю ошибки.

1 Ответ

0 голосов
/ 13 мая 2019

Как раз когда я отказался от публикации вопроса в StackOverflow, я нашел решение: мы должны явно вызывать тип перед методом, например, так:

someMethod( Creator<SomeClass, V> { someVariable -> ClassA.methodA(someVariable.methodB()) })

вместо:

someMethod( { someVariable -> ClassA.methodA(someVariable.methodB()) })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...