JAVA高级——lambda

本文介绍了JAVA中的高级主题——Lambda表达式。详细讲解了Lambda的基础概念,包括函数式接口、特点和使用场景。进一步探讨了Lambda的实现,如行为参数化和使用函数式接口。文章还讨论了重构过程中遇到的问题,如Lambda找不到的情况和从Lambda表达式转换为方法引用,并提供了重构策略模式和模板方法的示例。
摘要由CSDN通过智能技术生成

JAVA高级——lambda

      • 1、是什么是函数是接口?
      • 3、在哪里以及如何使用Lambda
    • lambda实现:环绕执行模式
      • 2、使用函数时接口传递行为
      • 3、执行一个行为并转为lambda
      • 2、重构使用lambda的问题
        • 2.1 重构lambda找不到情况
        • 2.2 从lambda表达式到方法引用的转换
      • 3、使用lambda重构设计模式

lambda基础

1、是什么是函数是接口?

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

:arrow_double_up: 上图就是一个函数是接口样式;

2、lambda的特点

  • 匿名————没有明确的名称:写的少想的多(就是不直观);
  • 函数————它不像普通的方法有特定的类。但是方法一样,lambda有方法一切的特性;
  • 传递————lambda表达式可以作为参数传递给方法或者存储在变量中;
  • 简洁————无需使用匿名类,可以省掉很多模板;

下面是一个使用了lambda简化的代码模板:

public void test03(){
 
    // 原来
    Consumer<Person> consumer = new Consumer<Person>() {
 
        @Override
        public void accept(Person person) {
 
            System.out.println(person);
        }
    };
    // now 1
    Consumer<Person> consumer1 = person -> System.out.println(person);
    // now 2
    Consumer<Person> consumer2 = System.out::println;
    
}

3、在哪里以及如何使用Lambda

当接口是函数式接口时,可以使用;

lambda实现:环绕执行模式

这里我将述说如何自定义一个template去实现我们自己想要的函数格式;

代码样例:

// 这一行代码只能阅读固定的文件
    public String BufferReadProcessor1() throws IOException {
 
        try(BufferedReader br = new BufferedReader(new FileReader("data.txt"))){
 
            return br.readLine();
        }
    }

1、行为参数化

如果我一次性想读取多个行文件呢?

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

2、使用函数时接口传递行为

package com.xiao.java_base.lambdas.demo01;

import java.io.BufferedReader;
import java.io.IOException;

@FunctionalInterface
public interface BufferReaderProcessor {
 
    String process(BufferedReader bufferedReader) throws IOException;
}

现在就可以把这个接口作为新的 ProcessFile 方法参数了

3、执行一个行为并转为lambda

@Test
public void test01() throws IOException {
 
   
    BufferReaderProcessor bufferReaderProcessor = new BufferReaderProcessor() {
 
        @Override
        public String process(BufferedReader bufferedRe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值