![](/img/trans.png)
[英]Type mismatch when call java generic Java method from Scala code
[英]“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.