Kotlin lambda / Java SAM互操作-类型不匹配

时间:2018-11-07 22:30:16

标签: kotlin kotlin-interop

我有一个定义如下的现有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函数定义匹配,我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

进行SAM转换时,您需要明确提供一种类型:

var a = MyRetriever { s : String -> Optional.ofNullable(s.toLowerCase()) }

请注意,您可以像以前一样省略a的类型声明。