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

    }
}
相关推荐
softshow10262 小时前
html2canvas + jspdf实现页面导出成pdf
开发语言·javascript·pdf
Pluchon2 小时前
硅基计划4.0 算法 动态规划入门
java·数据结构·算法·动态规划
Java程序员威哥2 小时前
Java应用容器化最佳实践:Docker镜像构建+K8s滚动更新(生产级完整模板+避坑指南)
java·开发语言·后端·python·docker·kubernetes·c#
shjita2 小时前
mr-----topn的用法
java
qq_2153978972 小时前
python环境无网络环境导入依赖
开发语言·python
小范馆2 小时前
C++ 编译方法对比:分步编译 vs 一步到位
java·开发语言·c++
垂葛酒肝汤2 小时前
C#的const和static的问题
开发语言·c#
ascarl20102 小时前
记录一下Nacos和XXLJOB修复漏洞
java
福娃筱欢2 小时前
通用机KESV8R2-3节点集群缩容为2节点
java·开发语言