Som*_*ame 3 java lambda function kotlin
我尝试编写以下代码:
val s: Function<String, String> = { s -> s + s }
Run Code Online (Sandbox Code Playgroud)
它编译时出现以下错误:
Type mismatch: inferred type is (???) -> [Error type: Return type for function cannot be resolved] but Function<String, String> was expected
Cannot infer a type for this parameter. Please specify it explicitly.
Run Code Online (Sandbox Code Playgroud)
Kotlin
将lambda分配给函数的正确方法是什么Java
?
您遇到的问题是由于在将 lambda 表达式与 Java 函数式接口结合使用时,Kotlin 的类型推断在此特定上下文中无法按预期工作。
Function
为了解决这个问题,您可以在代码中使用接口显式声明 lambda 类型:
import java.util.function.Function
fun main() {
val s: Function<String, String> = Function<String, String> { s -> s + s }
// Or simply
// val s: Function<String, String> = Function { s -> s + s }
}
Run Code Online (Sandbox Code Playgroud)