将Lambda方法从Java迁移到Kotlin时出现“类型不匹配”

时间:2019-05-13 15:37:46

标签: java kotlin lambda

我正在将一个类从Java迁移到Kotlin,但Kotlin转换器无法为我正确转换lambda表达式。

这是我在Java中的方法:

public static <V> void someMethod(Creator<SomeClass, V> 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 :(得分:0)

就在我放弃将问题发布到StackOverflow时,我找到了解决方案:我们必须在方法之前显式调用类型,就像这样:

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

代替:

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