2

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

4

1 回答 1

4

在进行 SAM 转换时,您需要显式提供一个类型:

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

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

于 2018-11-07T22:43:38.743 回答