我有一个定义如下的现有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函数定义匹配,我在这里缺少什么?
答案 0 :(得分:3)
进行SAM转换时,您需要明确提供一种类型:
var a = MyRetriever { s : String -> Optional.ofNullable(s.toLowerCase()) }
请注意,您可以像以前一样省略a
的类型声明。