JDK 8 函数式编程最佳实践

本文详细介绍了JDK 8的函数式编程,包括Lambda表达式的重要接口如Consumer、Supplier、Function,方法引用如静态、实例和构造方法引用,以及使用Lambda表达式进行集合规约操作和Optional的实用技巧。通过实例展示了如何优化代码,减少判空分支。
摘要由CSDN通过智能技术生成

JDK 8 函数式编程最佳实践

1. Lambda表达式的重要接口

1.1 新增的函数接口

主要指的是java.util.function包中的函数接口。

函数式接口:只含一个方法定义的接口。函数式接口能够定义一个Lambda表达式的类型。Lambda表达式实际是将特定形式的入参和返回值进行了抽象。

主要的抽象类型:

  1. Consumer:有一个入参,没有返回值
  2. Supplier:没有入参,有返回值
  3. Function:有一个入参,也有返回值

由此衍生来的常用抽象类型:

  1. Predicate:有一个入参,返回值为Boolean
  2. BiConsumer:有两个入参,没有返回值
  3. BiFunction:有两个入参,有返回值
  4. UnaryOperator:Function的特殊情况,入参和返回值类型相同
  5. BinaryOperator:BiFunction的特殊情况,两个入参和返回值的类型都相同
  6. Double,Integer以及Long的类型为primitive的各种特殊形式

根据这个定义,JDK中原来含有一个方法定义的接口都能够被上述的函数式接口进行抽象。

1.1 无参数,无返回值类型接口

典型的比如Runnable接口,定义一个Runnable实例不再需要使用匿名类的方式,直接使用Lambda表达式:

Runnable runnable = () -> {
   
    System.out.println("runnable");
};

实际上任何满足无入参,无返回值的方法都可以被引用成为一个Lambda表达式,然后赋值给一个Runnable实例:

Runnable testStatic = Test::testStaticRunnable;
private static void testStaticRunnable() {
   
    System.out.println("runnable in static");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值