爪哇8-2-Lambda表达式

lambda表达式是什么?

参考《Java8实战》
系列承接:呱呱8-1-行为参数化
8.【欧阳上智】代表性名言:
生,要享受自己双手所创下的成果;
死,要死在自己双手所持的利刃下。

  1. lambda表达式是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象 (lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
  2. 它没有名称,但是它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常的列表
  3. 概念:
    • 匿名:是因为它不想普通方法那样有一个明确的名称
    • 函数:是因为lambda函数不想方法那样属于某个特定的类,但是和方法一样,lambda有参数列表,函数主体,返回类型,还可能有可以抛出的异常列表
    • 传递:lambda表达式可以作为参数传递给方法或者存储在变量中
    • 简洁:无需向匿名类那样写很多模板代替代码
    • 函数式接口:就是仅仅声明了一个抽象方法的接口
    • 函数描述符:函数式接口的抽象方法的签名基本上就是lambda表达式的签名,我们将这种抽象方法叫做函数描述符

为什么要使用lambda表达式?

  1. 代码的传递过程过于繁琐(行为初始化的代码编码过程过于繁琐)

lambda表达式有什么好处?

  1. 可以简洁地传递代码

lambda表达式的使用要求?

  1. lambda表达式只有在接受函数式接口的地方才能使用
  2. 函数式接口:就是仅仅声明了一个抽象方法的接口
  3. lambda表达式允许你直接内联,为函数式接口的抽象方法提供实现,并且将整个表达式作为函数式接口的一个实现
  4. Java8自带的函数式接口。包:java.util.function包中,包括Predicate,Function<T,R>,Supplier,Consumer和BinaryOperator

lambda表达式的使用方式?

  1. 实例:环绕执行模式
//模板代码
public static String processFile() throw IOException{
    try(BufferedReader br = new BufferedReader(new FileReader("data.txt"))){
        return br.readLine();
    }
}
// 改造
// 行为参数化(行为代码)
String result = processFile((BufferedReader br-> br.readLine()+br.readLinr()));

//传递(函数式接口作为参数传递)
//函数式接口
@FunctionInterface
public interface BufferedReaderProcesser{
    String process(BufferedReader b) throws IOException;
}

public static String processFile(BufferedReaderProcesser p) throws IOException{
    ...
}

// 执行行为
public static String processFile(BufferedReaderProcesser p)throws IOException{
    try(BufferedReader br = new BufferedReader(new FileReader("data.txt"))){
        return p.process(br);
    }
}

//传递
String oneLine = processFile((BufferedReader br)->br.readLine());
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

booth-ZDH

爪哇一生

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

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

打赏作者

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

抵扣说明:

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

余额充值