简要演示了如何使用一次性和多次使用 泛型 从Kotlin调用功能接口。
基本
以下是用 Java 定义的功能接口:
注意,一个接口不需要被注释@FunctionalInterface为一个接口。
在Kotlin中,可以使用以下代码来实现:
由于该Executor接口只有一个函数和一个输入参数,因此可以为传递给的lambda分配类型execute。这样就无需将其显式定义为Runnable。这被称为SAM( 小号 英格尔 甲 bstract 中号 ethod)变换,见科特林文档的详细信息。
实现相同目标的更详细的方法如下:
如果您使用的是Intellij,它将帮助您找到第一个解决方案。
单类型泛型
让我们使其更加令人兴奋,并在本回合中包含一些泛型。使用Java接口和一个函数来调用它:
doStuff可以使用以下Kotlin代码调用该函数:
最简化代码的返回类型取决于lambda的结果,在这种情况下为a String。
多类型泛型
当泛型变得更加复杂时该怎么办?我对示例代码做了一些说明,以证明这一点:
我实际上很难想到一个示例来演示输入和输出泛型。我认为这段代码很丑陋,不太可能代表真正的代码。尽管如此,它仍然足以作为示例。
要调用此代码,请使用以下代码:
实际上,正如我第二次提到的那样,通用输入类型A(B在本示例中)将由外部来源提供。此外,泛型类型将在总体类上指定,或者从一开始就被锁定为特定类型。
点击关注私信小编“资源”即可获得免费的学习资料