Java核心知识lambda表达式使用介绍

Lambda 表达式在 Java 8 中被引入,它提供了一种简洁的方法来表示一段可以传递的代码块。Lambda 表达式常用于表示简单的方法接口(functional interface)的实例,一个 functional interface 是只有一个抽象方法的接口。Lambda 表达式极大地简化了匿名内部类的写法。

Lambda 表达式基本语法

Lambda 表达式的语法格式如下:

(parameters) -> expression
或
(parameters) -> { statements; }
  1. 参数列表:它可以包含零个或多个参数,参数类型可以明确声明,也可以由编译器从上下文推断(类型推断)。

  2. 箭头(->):这个符号用于链接参数列表和lambda体。

  3. Lambda体:可以是一个表达式,也可以是一个代码块。

示例

假设我们有一个接口 Runnable,它没有参数,也没有返回值。

@FunctionalInterface
public interface Runnable {
    void run();
}

使用Lambda表达式实现 Runnable

Runnable runLambda = () -> System.out.println("This is a lambda expression");

对于只有一个参数的情况,可以省略参数的括号:

Consumer<String> print = s -> System.out.println(s);

如果Lambda体包含了多条语句,需要用大括号括起来:

BiConsumer<Integer, Integer> sum = (a, b) -> {
    int result = a + b;
    System.out.println("Sum is " + result);
};

Lambda 表达式作为参数

Lambda 表达式最常用的场景之一就是作为方法参数,尤其是在集合的流(stream)操作中:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.forEach(name -> System.out.println(name));

Lambda 表达式和 Functional Interfaces

Lambda 表达式通常与 functional interfaces 一起使用。Java 标准库中包含了一些常用的 functional interfaces,例如:

  • Runnable
  • Callable<V>
  • Consumer<T>
  • Supplier<T>
  • Function<T,R>
  • Predicate<T>

Lambda 表达式的优点

  1. 代码简洁:Lambda 表达式使得代码更加简洁和清晰。
  2. 可读性强:去掉了冗余的代码,使得程序员可以更专注于执行的操作。
  3. 易于并行操作:与 Java 8 streams 搭配使用,可以轻松编写并行操作。

注意事项

  1. Lambda 表达式只能访问 final 或者 effectively final 的局部变量。
  2. Lambda 表达式在编译后,会被转换为一个私有的静态方法。
  3. 在使用Lambda表达式的时候,如果接口里有多个方法,则不能使用Lambda表达式(除非显式地指定一个特定方法的实现)。

结论

Lambda 表达式是 Java 8 的一个重要特性,它带来了函数式编程的风格,提高了代码的简洁性和可读性。通过使用Lambda表达式,可以以更少的代码完成更多的任务,尤其是在使用集合和线程时。随着 Java 的发展,Lambda 表达式和相关的功能接口已经成为了日常编程的一部分。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值