Kotlin lambda / Java SAM 互操作 - 类型不匹配
Kotlin lambda / Java SAM interop - type mismatch
我有一个现有的 Java 接口定义如下
public interface MyRetriever extends Function<String, Optional<String>> {}
并想定义一个变量,其中包含一个符合我理解的 SAM 转换的 Kotlin lambda
var a : MyRetriever = { s : String -> Optional.ofNullable(s.toLowerCase()) }
但我却收到类型不匹配错误。
Type missmatch.
Required: MyRetriever
Found: (String) -> Optional<String>
lambda 实际上匹配 Java 函数定义,我在这里缺少什么?
进行 SAM 转换时,您需要明确提供类型:
var a = MyRetriever { s : String -> Optional.ofNullable(s.toLowerCase()) }
请注意,您可以像以前那样省略 a
的类型声明。
我有一个现有的 Java 接口定义如下
public interface MyRetriever extends Function<String, Optional<String>> {}
并想定义一个变量,其中包含一个符合我理解的 SAM 转换的 Kotlin lambda
var a : MyRetriever = { s : String -> Optional.ofNullable(s.toLowerCase()) }
但我却收到类型不匹配错误。
Type missmatch.
Required: MyRetriever
Found: (String) -> Optional<String>
lambda 实际上匹配 Java 函数定义,我在这里缺少什么?
进行 SAM 转换时,您需要明确提供类型:
var a = MyRetriever { s : String -> Optional.ofNullable(s.toLowerCase()) }
请注意,您可以像以前那样省略 a
的类型声明。