Java8 实战系列-03-lambda 表达式实战

环绕执行模式

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());
}

目录导航

目录导航

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值