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

Is there a way to use Kotlin lambda to create java.util.funtion.Function?

提问人:Some Name 提问时间:8/30/2023 更新时间:8/30/2023 访问量:71

问:

我尝试编写以下代码:

val s: Function<String, String> = { s -> s + s }

编译时出现以下错误:

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.

将 lambda 分配给函数的正确方法是什么?KotlinJava

Java 函数 Kotlin Lambda

评论


答:

5赞 Diego Borba 8/30/2023 #1

您遇到的问题是由于在将 lambda 与 Java 函数接口一起使用时,Kotlin 的类型推断在此特定上下文中无法按预期工作。

要解决此问题,您可以使用代码中的接口显式声明 lambda 类型:Function

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 }
}
2赞 Youcef LAIDANI 8/30/2023 #2

尝试使用 ,完整示例:Function<String, String>

import java.util.function.Function

fun main() {
    val s: Function<String, String> = Function { s -> s + s }
    val result = s.apply("Kotlin")
    println(result) // KotlinKotlin
}