前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 8 中的 Lambda 表达式 vs. Kotlin 中的 LambdaJava 8:Kotlin:小结Kotlin 开发者社区

Java 8 中的 Lambda 表达式 vs. Kotlin 中的 LambdaJava 8:Kotlin:小结Kotlin 开发者社区

作者头像
一个会写诗的程序员
发布2018-12-13 09:38:51
6660
发布2018-12-13 09:38:51
举报

Java 8:

代码语言:javascript
复制
public void filter(Filter f, List<Integer> integerList) {
    for (Integer i : integerList) {
        if (f.test(i)) {
            System.out.println(i);
        }
    }
}
// 定义一个 SAM
interface Filter {
    boolean test(int x);
}

public void lambdaDemo() {
    filter((x) -> x % 2 == 1, Arrays.asList(1, 2, 3, 4, 5, 6, 7));
}

Java 在一个拥有两个方法(不含默认方法)的接口中,是不可以使用 Lambda 表达式的,当一个接口中只有一个抽象方法,即达成了SAM(Single Abstract Method)条件时,Lambda表达式才可以使用。

Kotlin:

代码语言:javascript
复制
fun filter(f: (Int) -> Boolean, integerList: List<Int>) {
    for (i in integerList) {
        if (f(i)) {
            println(i)
        }
    }
}

fun lambdaDemo() {
    filter({ x -> x % 2 == 1 }, Arrays.asList(1, 2, 3, 4, 5, 6, 7))
}

在 Kotlin 中,函数 f:(Int)->Boolean 也是一种类型,可以像普通的参数变量一样,在函数入参中传递,当然也可以返回一个函数。

小结

相比之下,Kotlin 对函数式编程的支持更加自然优雅。


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.11.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java 8:
  • Kotlin:
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档