Lambda表达式

什么是Lambda表达式?

标准语法:

java 复制代码
(参数,.....) -> {
    //方法体代码
}
() : 代表的是一个方法
 ->    :  指向要做的事情
{ }  : 功能代码(具体要做事情的代码)代表函数式接口的抽象方法
java 复制代码
public class Test {
    public static void main(String[] args) {
        //方式1:
        Swim swim = new Swim() {
            //匿名内部类
            @Override
            public void swimming() {
                System.out.println("swimming");
            }
        };
        swim.swimming();//swimming


        
        //方式2:
        method(()->{
            System.out.println("游泳。。。");
        });//游泳。。。
    }
    public static void method(Swim swim) {
        swim.swimming();
    }
}

Lambda表达式的使用?

前置要求:仅针对函数式接口进行代码编写

函数式接口的特点:接口中仅有一个抽象方法(其他的允许有:静态方法、默认方法、私有方法)

java 复制代码
@FunctionalInterface    
//java针对函数式接口,制定了一个注解:@FunctionalInterface
  public interface Comparator<T> {
      .......
  }

Lambda表达式在程序中解决什么问题?

简化程序中的匿名内部类代码书写

Lambda表达式的省略模式:

  1. 可以省略参数类型:要么全部省略,要么全部保留

  2. 如果参数仅有一个时,可以省略小括号

  3. 如果代码块中仅有一行代码,可以省略:大括号、分号、return

java 复制代码
public class CalculatorDemo1 {
    public static void main(String[] args) {
        useCalculator(( num1, num2)-> num1*num2//输出200
        );

    }
    public static void useCalculator(Calculator calculator){
        int result = calculator.calc(10,20);
        System.out.println(result);
    }
}
java 复制代码
public class StringHandlerDemo {
    public static void main(String[] args) {
useStringHandler(new StringHandler() {
    @Override
    public void printMessage(String msg) {
        System.out.println();
    }
});
//Lambda表达式省略
useStringHandler( msg-> System.out.println("nh"+msg));//输出:nh你好
    }
    public static void useStringHandler(StringHandler stringHandler){
        stringHandler.printMessage("你好");

    }
}
相关推荐
侠客行03179 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪9 小时前
深入浅出LangChain4J
java·langchain·llm
灰子学技术11 小时前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
老毛肚11 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎11 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
二十雨辰11 小时前
[python]-AI大模型
开发语言·人工智能·python
Yvonne爱编码11 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚12 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂12 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas13612 小时前
41-parse的实现原理&有限状态机
开发语言·前端·javascript