如何在 Kotlin 中编写供应商声明?

Den*_*ise 2 kotlin

我想在我的测试中使用供应商接口。我现在嘲笑它是一个粗略的解决方案,但我如何定义它?在Java中我会做类似的事情,

Supplier<List<String>> list = () -> Collections.emptyList();

有没有办法在 kotlin 中也这样定义它?

Ten*_*r04 10

在 Kotlin 中,函数对象是一流的,因此您不需要Supplier 来创建生成某些内容的函数,除非您使用需要它的 Java API。供应商的功能等价物是一个没有输入并返回某些内容的函数,因此您可以这样定义它:

val list: ()->List<String> = { emptyList() }
Run Code Online (Sandbox Code Playgroud)

如果您需要文字供应商,则可以使用类似构造函数的“适配器函数”SAM 转换 lambda 语法:

val list: Supplier<List<String>> = Supplier { emptyList() }
Run Code Online (Sandbox Code Playgroud)