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("你好");

    }
}
相关推荐
程序员清风8 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林5519 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊14 小时前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing15 小时前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠1 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840821 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide1 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家1 天前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java
花花无缺1 天前
搞懂new 关键字(构造函数)和 .builder() 模式(建造者模式)创建对象
java
用户908324602731 天前
Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
java·后端