环绕执行模式

JDK1.7 引入的 TWR 语法,
令读取文件后的资源释放变得更加简洁。

public static String processFile() throws IOException {try (BufferedReader bufferedReader =new BufferedReader(new FileReader("1.txt"))) {return bufferedReader.readLine();}
}

lambda

行为参数化

上面的方法中有局限。

如果我想返回头 2 行的内容,甚至返回最频繁的,怎么办?

我们要做的就是将 processFile()行为参数化

传递行为,正是 lambda 擅长的。

代码看起来可能是这样:

String result = processFile((BufferedReader br)->br.readLine()+br.readLine());

定义函数式接口

与上面我们的定义相互匹配。

/*** 文件读取* @author bbhou*/
@FunctionalInterface
public interface BufferedReaderProcessor {/*** 执行* @param bufferedReader* @return* @throws IOException*/String process(BufferedReader bufferedReader) throws IOException;}

执行一个行为

public static String processFile(BufferedReaderProcessor bufferedReaderProcessor) throws IOException {try(BufferedReader bufferedReader = new BufferedReader(new FileReader("1.txt"))) {return bufferedReaderProcessor.process(bufferedReader);}
}

传递 lambda

public static void main(String[] args) throws IOException {processFile((BufferedReader br)->br.readLine()+br.readLine());
}

目录导航

目录导航

Java8 实战系列-03-lambda 表达式实战相关推荐

  1. java 8 lamda,Java8中你可能不知道的一些地方之Lambda表达式实战

    Java8 引入 Lambda 表达式,允许开发者将函数当成参数传递给某个方法,或者把代码本身当作数据进行处理.使用 Lambda 表达式,使得应用变得简洁而紧凑. 很多语言(Groovy.Scala ...

  2. 【java8新特性】——lambda表达式与函数式接口详解(一)

    一.简介 java8于2014年发布,相比于java7,java8新增了非常多的特性,如lambda表达式.函数式接口.方法引用.默认方法.新工具(编译工具).Stream API.Date Time ...

  3. Kotlin系列之Lambda表达式(1)

    今天开始后续的几篇Kotlin的文章会介绍Kotlin中Lambda表达式相关的内容. 什么是Lambda表达式 在Java8中引入了Lambda表达式,这是最令Java开发者激动和期待的一个功能.那 ...

  4. java8新特性之lambda表达式--超级详细版本

    java8新特性之lambda表达式 1.什么是lambda表达式?为什么用它? 2. 为什么Java需要lambda表达式? 3. lambda表达式的语法 4.函数式接口 4.1 什么是函数式接口 ...

  5. Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解

    Java8新特性:Lambda 表达式.方法和构造器引用.Stream API.新时间与日期API.注解 1.Java8新特性 1.1.主要的新特性: 1.2.编程风格 2.Lambda 表达式 2. ...

  6. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  7. JDK8系列之Lambda表达式教程和示例

    JDK8系列之Lambda表达式教程和示例 1.Lambada 表达式简介 Lambda 表达式是一种匿名函数,但对Java中的Lambda表达式而已并不完全正确,简单来说,Lambda表达式是一种没 ...

  8. lambda 两个list获取交集_《Java8 实战》笔记 - Lambda 表达式

    Lambda 表达式介绍 ​ 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它 有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表.这个定义够大的,让我 ...

  9. java 复合方法_《Java 8 实战》Ch3: Lambda表达式(下):类型与限制、方法引用、复合...

    李文轩 2019-04-23 3.5 类型的检查和判断:变量捕获限制 类型检查 Lambda的类型是从使用Lambda的上下文推断出来的. Lambda表达式需要的类型称为目标类型 . Lambda表 ...

  10. java8新特性之Lambda表达式入门

    一 什么是Lambda表达式 Lambda表达式:可以让你的代码更加的简洁.ambda无法单独出现,需要一个函数式接口来盛放,可以说lambda表达式方法体是函数式接口的实现,lambda实例化函数式 ...

最新文章

  1. JavaScript创建对象的方法
  2. Leading and Trailing(数论题)
  3. springboot3.x 集成持久层框架
  4. JTextAre 文字右对齐 JTextArea دىكى خەتلەرنى ئوڭدىن س...
  5. GaussDB(DWS)应用实践丨负载管理与作业排队处理方法
  6. 一份超详细的VTD安装指南(内容含如何安装ubuntu系统及如何在ubuntu中安装显卡驱动)
  7. 使用Charles抓取百词斩单词音频、单词翻译、例句音频、例句翻译
  8. [SSL_CHX][2021-08-20]幸运数字们
  9. Anaconda介绍、安装及使用保姆级教程
  10. 【java】getResourceAsStream(“.properties“)配置文件无法读入问题
  11. linux入门怎么学
  12. 火山PC-安卓-易语言混合通讯教程(火山视窗)
  13. mac 备份文件 太大 时间机器_Mac 时间机器 Time Machine 备份速度太慢的解决方法
  14. Bootstrap 图片轮播
  15. 项管行知05--可交付成果
  16. CS231n - Assignment2 Tensorflow
  17. 操作系统中任务调度的实现
  18. jsp试卷分析管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  19. Enet语义分割笔记
  20. 武汉唯众智创科技有限公司通过2020第二批产学合作协同育人项目申报指南

热门文章

  1. java数据结构与算法pdf下载
  2. 单片机c语言控制直流电机转速,一个用单片机控制直流电机的PWM调速程序
  3. [Python可视化] pyecharts安装入门及绘制中国贵州地图
  4. proxy ip 收集方式总结
  5. coolfire文章之八
  6. HBase基本操作:JAVA API操作
  7. 在VS2017(VC15)上配置opencv4.0.1环境
  8. 视频行为识别检测综述
  9. 程序员常用不常见很难得的地址大全
  10. 数学建模——怎样学习数学建模