.net 接口调用接口发送文件_从Kotlin调用Java功能接口

简要演示了如何使用一次性和多次使用泛型从Kotlin调用功能接口。

基本

以下是用Java定义的功能接口:

7dfd002927a03ca5ac9d41fd176b1823.png

注意,一个接口不需要被注释@FunctionalInterface为一个接口。

在Kotlin中,可以使用以下代码来实现:

9cb7f8d7495f5e64671804796bc28cd7.png

由于该Executor接口只有一个函数和一个输入参数,因此可以为传递给的lambda分配类型execute。这样就无需将其显式定义为Runnable。这被称为SAM(小号英格尔 bstract 中号 ethod)变换,见科特林文档的详细信息。

实现相同目标的更详细的方法如下:

766b8f1da5d072e462e1724141184a15.png

如果您使用的是Intellij,它将帮助您找到第一个解决方案。

单类型泛型

让我们使其更加令人兴奋,并在本回合中包含一些泛型。使用Java接口和一个函数来调用它:

9a819ffbfcec856f0cf33cd2a5835ea0.png

doStuff可以使用以下Kotlin代码调用该函数:

a1df5fbdb4ae0e1e92d03e69e2a7674a.png

最简化代码的返回类型取决于lambda的结果,在这种情况下为a String。

多类型泛型

当泛型变得更加复杂时该怎么办?我对示例代码做了一些说明,以证明这一点:

73ff5f89c40a24ede98c55711bfd0abe.png

我实际上很难想到一个示例来演示输入和输出泛型。我认为这段代码很丑陋,不太可能代表真正的代码。尽管如此,它仍然足以作为示例。

要调用此代码,请使用以下代码:

282125b02db91f2485ae9d1032305b23.png

实际上,正如我第二次提到的那样,通用输入类型A(B在本示例中)将由外部来源提供。此外,泛型类型将在总体类上指定,或者从一开始就被锁定为特定类型。

点击关注私信小编“资源”即可获得免费的学习资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值