如何用Kotlin Lambda实现java.util.function.Function?
解决方法
要将Kotlin Lambda赋值给Java的java.util.function.Function接口,核心是让编译器明确Lambda参数的类型,具体有两种常用方式:
显式指定Lambda参数类型:
直接在Lambda的参数上声明类型,让编译器匹配Java Function的泛型约束:import java.util.function.Function val s: Function<String, String> = { s: String -> s + s }显式类型转换:
先定义带参数类型的Lambda,再转换为Java Function类型:import java.util.function.Function val s = { s: String -> s + s } as Function<String, String>
错误原因
你遇到的编译错误,本质是编译器无法自动推断Lambda中参数s的类型——Java的Function<String, String>是泛型接口,Kotlin无法仅通过变量的声明类型反向推导Lambda参数的具体类型,必须显式标注参数类型才能完成类型匹配。
内容的提问来源于stack exchange,提问作者Some Name
相关产品推荐
相关产品推荐

