Kotlin的SAM转换
Java中的SAM
Java8之后,我们将只有单一方法的接口称为SAM(Single Abstract Method)接口,Java8通过Lambda可以大大简化对于SAM接口的调用。没有引入Lambda之前,我们是这样调用SamType的:
interface JavaInterface {String doSomething(Item item);
}String delegateWork(JavaInterface f) {return f.doSomething(item);
}void doWork() {delegateWork(new JavaInterface() {@Overridepublic String doSomething(Item item) {return "Item = " + item;}});
}
我们需要实现一个JavaInterface的匿名内部类对象,即使只有一个方法,也要规规矩矩地对方法进行声明。但在Java8之后,我们可以使用Lambda简化对SamType的调用进行简化:
@FunctionalInterface
interface JavaInterface {String doSomething(Item item);
}String delegateWork(JavaInterface f) {return f.doSomething(item);
}void doWork() {delegateWork(item -> "Item = " + item);
}
我们将上述借助Lambda对SamType调用的优化称为SAM转换(Single Abstract Method Conversions)
Kotlin兼容Java中的SAM转换
我们在Kotlin中使用在Java中定义的delegateWork方法时,SAM转换同样有效:
//java:定义delegateWork
String delegateWork(JavaInterface f) {return f.doSomething(item);
}
//kt:调用delegateWork
delegateWork { "Print $it" }
Kotlin将Java的SamType翻译成了lambda,因此在kotlin的同名方法实际变成了一个高阶函数:
String delegateWork(JavaInterface f)
Kotlin is 100% interoperable with Java™ and Android™ 在前面的章节中,我们已经学习了Kotlin的基础语法.类型系统.泛型与集合类.面向对象与函数式 ... 原标题:Kotlin的互操作--Kotlin与Java互相调用 互操作就是在Kotlin中可以调用其他编程语言的接口,只要它们开放了接口,Kotlin就可以调用其成员属性和成员方法,这是其他编程语言所 ... 作者:Zhujiang, 本文经作者授权发布,链接:https://juejin.im/post/5e95633951882573c2192501 前言 第一次听到暗黑模式的时候,感觉好酷啊,听着就好 ... 点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 在过 ... "我们手上是一个很成熟的项目,所以毫无疑问需要保留 Java 代码,目前只会在新开发的页面中使用 Kotlin,并已经感受到了它带来的便利.随着功能的迭代,我们相信更多的功能会转而使用 Ko ... 参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ... 作者 | 张红月 出品 | CSDN(ID:CSDNnews) 近日,JetBrains 官博发文庆祝 Kotlin 十岁了,并制作纪念网站和视频来庆贺这一关键时刻. 2011 年 7 月 19 日, ... 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内要闻 字节跳动全资收购才云科技,相关业务及团队并入火山引 ... 函数 表达式:fun 方法名(参数名1: 数据类型, 参数名2: 数据类型): 返回值数据类型{ } 普通用法 fun test(a: Int): String {return "" ... 对于企业来说,目前的Android开发面临着许多挑战,尤其是选择哪种技术用于开发最好的Android应用程序. Kotlin和Java是用于Android应用程序开发的两种编程语言,即使是有技术背景的 ... 转换为
Kotlin的SAM转换相关推荐
最新文章
热门文章