繁体   English   中英

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

[英]“Type mismatch” when migrating lambda method from Java to Kotlin

我正在将一个类从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: (???) -> ???

我不明白它的哪一部分有错误的语法。 我尝试从其他帖子的建议中实现多种方式,但我仍然会遇到错误。

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

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

代替:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM