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

    }
}
相关推荐
松仔log1 小时前
JetPack——Paging3+Room
android·java·zoom
biter down6 小时前
14:pytest-order 插件 顺序控制案例
开发语言·python·pytest
郝学胜-神的一滴6 小时前
Qt 高级开发 009: C++ Lambda 表达式
开发语言·c++·qt·软件构建
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Lei活在当下6 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
石山代码7 小时前
C++ 轻量级日志系统
开发语言·c++
Java爱好狂.7 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
tongluowan0077 小时前
以ReentrantLock为例解释AQS的工作流程
java·模板方法模式·aqs·reentrantlock
小技与小术7 小时前
玩转Flask
开发语言·python·flask
SilentSamsara7 小时前
Python 性能优化:tracemalloc、profiling 与 C 扩展加速
开发语言·python·青少年编程·性能优化