有没有办法使用 Kotlin lambda 来创建 java.util.funtion.Function?

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

Die*_*rba 5

您遇到的问题是由于在将 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)