前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Lambda表达式

Lambda表达式

作者头像
晚上没宵夜
发布于 2020-03-10 02:48:58
发布于 2020-03-10 02:48:58
31800
代码可运行
举报
运行总次数:0
代码可运行

学习Lambda表达式之前需要一些铺垫,下面直接开始把

1. 接口的默认方法

接口之前定义为只有常量和抽象方法,JDK1.8之后增加了默认方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface Test {
    
    int num = 10;
    
    abstract void say();

    default void sayHello(){
        System.out.println("sayHello");
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    
    Test test = new Test(){
        @Override
        public void say() {
            System.out.println("say");
        }
    };
    test.say();
    test.sayHello();
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
say
sayHello

2. 函数式接口

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口,下面举例多线程的Runnable接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@FunctionalInterface
public interface Runnable {
    
    public abstract void run();
}

从中可以看出该接口只有一个抽象方法,并且方法上标有@FunctionalInterface注解,不了解注解的同学可以康康 注解传送门

3. Lambda表达式

这个不知道怎么开头,所以看代码先

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {

    Thread thread = new Thread(
        ()-> { System.out.println("Lambda表达式"); }   // Lambda表达式
    );
    thread.start();
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Lambda表达式
  • 其中 () - > {},圆括号表示抽象方法的参数列表括号,大括号表示抽象方法的方法体
  • return 可以省略,形参类型也是,因为会自动对应
  • Lambda表达式表示的是接口的实例对象,记住不是方法喔

4. :: 引用

创建一个类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Test {
    
    // 静态方法
    public static void testStatic(String str) {
        System.out.println(str);
    }

    // 实例方法
    public void testInstance(String name) {
        System.out.println(name);
    }

    // 无参构造方法
    public Test() {
    }
}

::引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    
    // 静态方法引用
    Consumer<String> Consumer1 = Test::testStatic;
    Consumer1.accept("Howl");

    // 实例方法引用
    Test test = new Test();
    Consumer<String> consumer2 = test::testInstance;
    consumer2.accept("Howl");

    // 构造方法方法引用
    Supplier<Test> supplier = Test::new;
    System.out.println(supplier.get());
}

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Howl
Howl
Test@e9e54c2
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Lambda表达式
Lambda表达式本质:用作接口的实现(其实就是把之前实现接口的步骤简化了)。接口必须是函数式接口
十玖八柒
2022/08/01
2950
小朋友好好学学lambda表达式吧!
但他们的问题也很突出:就是**“噪声”**太多!想实现一个数组的比较功能,至少要写5行代码,但其中只有一行代码才是我们真正关注的!
你呀不牛
2021/12/02
3250
java8新特性(一):Lambda表达式
Lambda 是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
周三不加班
2019/09/03
4010
java8新特性(一):Lambda表达式
JDK1.8新特性之Lambda表达式
Java8中引入了一个新的操作符“ -> ”,该操作符被称为箭头操作符或Lambda操作符,箭头操作符将Lambda表达式拆分成两部分:
程序员波特
2024/01/19
1650
【Java8新特性】01 函数式接口和Lambda表达式你真的会了吗
Lambada表达式可以理解为:可传递的匿名函数的一种简洁表达方式。Lambda表达式没有名称,同普通方法一样有参数列表、函数主体、返回类型等;
爱笑的架构师
2020/09/24
4490
Java8中的Lambda表达式
大家好啊,我是汤圆,今天给大家带来的是《Java8中的Lambda表达式》,希望对大家有帮助,谢谢
汤圆学Java
2021/04/16
3340
Java8中的Lambda表达式
Java 8 Lambda 表达式相关
Java 8 之后推出的 Lambda 表达式开启了 Java 语言支持函数式编程(Functional Programming)的新时代。
acc8226
2022/05/17
3370
解构Lambda表达式
把方法作为值传递虽然很有用,但是有时有些方法我们不想具体定义,这时候Lambda函数就登场了。Lambda表达式的基本语法是(parameters)->expression或者(parameters)->{statements;}
简熵
2023/03/06
3030
解构Lambda表达式
Lambda表达式
Lambda表达式是可以在函数式接口上使用的。函数式接口就是只定义一个抽象方法的接口。比如:
后端码匠
2019/09/02
6050
Java 学习笔记(11)——lambda 表达式
在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编写一个新类,即使说使用匿名内部类来实现,这样似乎比较麻烦。C中的做法是直接传入一个函数指针,而Java中就需要上述麻烦的操作,能不能简单点呢?为此Java中引入了一个lambda表达式的功能。
Masimaro
2019/07/15
4090
java-接口、lambda表达式
接口中所有方法必须为public 接口中不能定义成员变量,但是可以定义为一个常量(类型为public static final) 不能用new来实例化一个接口,但是允许定义一个接口变量 接口变量必须引用实现了该接口的类对象 同一个类可以同时实现多个接口 接口可以定义default方法,该方法提供了一个默认的实现,实现该接口时可以按需重写该方法 接口中的默认方法可以调用其他任意方法 java-SE8后允许接口定义静态方法 public class InterfaceTest implements Test{
卢衍飞
2023/02/16
5110
Lambda表达式与Stream API
  Java8最具革命性的两个新特性是Lambda表达式和Stream API,它们都是基于函数式编程的思想,函数式编程给Java注入了新鲜的活力。
别团等shy哥发育
2023/02/25
2.3K0
Lambda表达式与Stream API
最近学到的Lambda表达式基础知识
之前写Optional这个类的时候,简单说了一下Lambda是怎么用的,这里再跟大家一起回顾一下,Lambda的语法是这样的:
Java3y
2019/09/18
5330
最近学到的Lambda表达式基础知识
Lambda表达式
从2014年java8发布到现在已经有几个年头了,现在java11都发布了。公司最近把服务器环境重新搭建了一遍,jdk版本也从7换成了8,终于可以在代码里面写Lambda表达式了。作为一名java开发人员,java8的一些新东西也是必须要掌握的,今天就说说这Lambda表达式的使用。
用户4283147
2022/10/08
4750
Lambda表达式
【JDK1.8 新特性】Lambda表达式
Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。
CODER-V
2023/03/08
2610
JDK新特性-Lambda表达式的神操作
args -> expr或者(object … args)-> {函数式接口抽象方法实现逻辑}
全栈程序员站长
2021/04/07
2420
(91) Lambda表达式 / 计算机程序的思维逻辑
在之前的章节中,我们的讨论基本都是基于Java 7的,从本节开始,我们探讨Java 8的一些特性,主要内容包括: 传递行为代码 - Lambda表达式 函数式数据处理 - 流 组合式异步编程 - CompletableFuture 新的日期和时间API 本节,我们先讨论Lambda表达式,它是什么?有什么用呢? Lambda表达式是Java 8新引入的一种语法,是一种紧凑的传递代码的方式,它的名字来源于学术界的λ演算,具体我们就不探讨了。 理解Lambda表达式,我们先回顾一下接口、匿名内部类和
swiftma
2018/01/31
6530
(91) Lambda表达式 / 计算机程序的思维逻辑
Java8新特性(1):Lambda表达式
Lambda表达式可以理解为一种匿名函数:没有名称,但有参数列表、函数主体、返回类型。它是行为参数化的一种实现,行为参数化是指将不同的行为作为参数传递给方法,方法的所具备的能力取决于它接收的行为参数。使用Lambda表达式使我们不必为这些行为去编写一堆固定的实现类就能应对不断变化的需求,在1.8之前,可以使用匿名内部类的方式达到相同的效果,只是相对于Lambda表达式来说,匿名内部类的方式会显得啰嗦。
布禾
2020/10/29
3270
Lambda表达式与函数式接口:什么是Lambda表达式?如何在JDK 8中实现匿名函数?
在JDK 8之前,写匿名类非常繁琐,代码冗长,特别是用来实现简单的功能时。JDK 8引入了Lambda表达式和函数式接口,让Java代码更加简洁、灵活。在本篇文章中,猫头虎将详细解析:
猫头虎
2024/12/18
1150
Lambda表达式与函数式接口:什么是Lambda表达式?如何在JDK 8中实现匿名函数?
探索Lambda表达式:程序员视角下的数学之美与实战
Lambda表达式是Java 8 引入的一个重要特性,它允许将函数作为方法的参数传递,使得代码更加简洁和易读。Lambda表达式本质上是一个匿名函数,它可以代替传统的匿名内部类来实现函数式编程的思想。
不惑
2024/05/11
3420
探索Lambda表达式:程序员视角下的数学之美与实战
相关推荐
Lambda表达式
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档