我正在将一个类从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: (???) -> ???
我不明白其中哪一部分语法错误。我尝试从其他帖子的建议中以多种方式实现它,但仍然出现错误。
答案 0 :(得分:0)
就在我放弃将问题发布到StackOverflow时,我找到了解决方案:我们必须在方法之前显式调用类型,就像这样:
someMethod( Creator<SomeClass, V> { someVariable -> ClassA.methodA(someVariable.methodB()) })
代替:
someMethod( { someVariable -> ClassA.methodA(someVariable.methodB()) })