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

    }
}
相关推荐
JAVA面经实录91732 分钟前
RabbitMQ 完整面试题答案
java·rabbitmq·java-rabbitmq
xcl09257 小时前
商超智能运营实战:数据驱动提升门店效率与体验指南
java·mfc·宠物
Flynt9 小时前
OpenJDK禁AI代码半年了,现在执行得怎么样?答案是:全靠自觉
java·开源·ai编程
古法安卓14 小时前
Android-日志系统源码解析
android·java·android studio
小夏coding16 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进
java·后端
MacroZheng17 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"
java·人工智能·后端
十年Java程序媛18 小时前
深度实战:JDK21 虚拟线程 + HikariCP 生产正确配比、坑点、监控全套
java·spring boot
xiaoqiMikko18 小时前
有人在搜一个不存在的 Tomcat 版本
java·tomcat
用户3126874877201 天前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized
java
vipxieliang1 天前
ValidX vs Apache Commons Validator:功能与性能对比
java·spring boot