函数式编程

原语句代码

powershell 复制代码
public class Test {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("新线程中run方法被执行了");
            }
        }).start();
    }
}

简化步骤如下:

lambda表达式不关注类型是什么,也不关注方法名是什么名,只关注匿名函数类中的参数列表和方法体。

  • 我们简化掉了new Runnable()
  • 我们简化掉了run
  • 我们简化掉了@Override

相当于public void run () {
System.out.println("新线程中run方法被执行了");
} 标黄部分

powershell 复制代码
public class Test {
    public static void main(String[] args) {
        new Thread(()->{
                System.out.println("新线程中run方法被执行了");
        }).start();
    }
}

省略规则

  • 参数类型可以省略
  • 方法体里面只有一句代码时大括号以及return语句以及语句后面的分号(;)可以省略
  • 方法体只有一个参数时方法小括号可以省略
  • 都记不住不要紧,在IDEA中使用Alt+Enter键可以自动转换

以下代码是最简省略写法

powershell 复制代码
public class Test {
    public static void main(String[] args) {
    int i= calculateNum((left, right) -> left + right);
    System.out.println(i);
}

public static int calculateNum(IntBinaryOperator operator){
    int a=10;
    int b=10;
    return operator.applyAsInt(a,b);
    }
}
相关推荐
有一个好名字1 分钟前
设计模式-工厂方法模式
java·设计模式·工厂方法模式
篱笆院的狗1 分钟前
Java 中线程之间如何进行通信?
java·开发语言
编程修仙3 分钟前
第一篇 VUE3的介绍以及搭建自己的VUE项目
前端·javascript·vue.js
search73 分钟前
前端学习13:存储器
前端·学习
葱白有滋味7 分钟前
Session、Token 和 JWT 的区别对比
java
星月心城7 分钟前
八股文-JavaScript(第一天)
开发语言·前端·javascript
Thomas_YXQ8 分钟前
Unity3D的委托和事件的用法详解
java·开发语言
政采云技术8 分钟前
深入理解 Webpack5:从打包到热更新原理
前端·webpack
zwxu_10 分钟前
thread堆栈分析报告
java·微服务·消息队列·熔断
百***787511 分钟前
gpt-image-1.5极速接入指南:3步上手+图像核心能力解析+避坑手册
android·java·gpt