首页
学习
活动
专区
圈层
工具
发布
清单首页java文章详情

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

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 对函数式编程的支持更加自然优雅。


下一篇
举报
领券