首页 > 其他分享 >Lambda表达式

Lambda表达式

时间:2023-09-13 23:58:28浏览次数:24  
标签:函数 void 接口 println 表达式 Lambda

Lambda表达式

要使用lambda表达式就要要使用java 8,使用Lambda表达式可以让我们的代码更少,看上去更简洁;它是为了简化了函数式接口匿名内部类的语法。

Lambda只能接受函数式接口,所谓的函数式接口指的是只能有一个抽象方法的接口。

Lambda表达式语法

Lambda表达式通过操作符->分为两个部分:

  • 左侧:指定了Lambda表达式所需要的所有参数。

  • 右侧:指定了Lambda体,即Lambda表达式所要执行的功能。

    () ->{System.out.println("你好,啊辉吖!")}
    

    image-20230912224323705

public class LambdaExample {
    public static void main(String[] args) {
        //普通写法(匿名内部类)
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Ordinary Writing");
            }
        });
        thread.start();

        //Lambda写法。无参无返回void
        Thread thread1 = new Thread(() -> System.out.println("Lambda Writing"));
        thread1.start();
    }
}

******************【运行结果】******************
Ordinary Writing
Lambda Writing

什么是函数式接口

允许有一个抽象方法的接口,那么它就是一个函数式接口。针对函数式接口,官方给我们提供了一个注解@FunctionalInterface,该注解会检查它是否是一个函数式接口,所以如果我们需要自定义一个函数式接口的话,可以在接口类的上方声明@FunctionalInterface。

需要注意的是,数式接口虽然规定只能有一个抽象方法,但是同时可以有多个非抽象方法(如静态方法,默认方法,私有方法)。下面是一个自定义的函数式接口:

@FunctionalInterface
public interface FunctionalInterface {
    /**
     * 抽象方法(只能有一个)
     */
    void method();
    //void method1();再定义一个会提示:找到多个抽象方法

    /**
     * 默认方法,必须用default修饰
     */
    default void defaultMethod() {
        System.out.println("默认方法...");
    }

    /**
     * 静态方法方法
     */
    static void staticMethod() {
        System.out.println("静态方法...");
    }
}

需要注意的是,使用Lamdba表达式虽然能简化开发,但如果写的不好,运行调试和后期维护就会比较麻烦。

标签:函数,void,接口,println,表达式,Lambda
From: https://www.cnblogs.com/ahui-blog/p/17701122.html

相关文章

  • 求表达式的值
    利用栈求表达式的值,用Java实现如下所示://栈的定义publicclassArrayStack{//栈的大小privateintSIZE=0;//一维数组int[]arrayStack;//栈顶指针privateinttop=-1;//等于-1时表示栈中没有任何数据//初始化栈的大小publ......
  • Spring小技巧--计算表达式的值
    平时工作中经常要用到表达式值的计算问题,Spring框架中提供了SpringExpressionLanguage(简称SpEL)机制,可以很方便快捷的实现表达式值的计算;SpEL机制需要引入Spring-expression包。下面列举其应用的两个小Demo;1、数值计算:StringexpressionStr="19+26";ExpressionParse......
  • Lambda表达式中的in操作
    //首先,在程序中接受一个数组例如:int[]s=[1,2,3];//在Lamda表达式中使用如下:db.userinfo.where(u=>s.Contains(u.id));//等同于sql语句:select*fromuserinfowhereidin(1,2,3)原文链接:https://blog.csdn.net/qq_39569480/article/details/105249292......
  • 正则表达式基础
    参考:https://blog.csdn.net/weixin_44489823/article/details/100174865,https://blog.csdn.net/m0_62618110/article/details/123704869基础语法"^"指出一个字符串的开始"$"指出一个字符串的结束"\"将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、......
  • Python学习 -- 正则表达式(re模块)
    正则表达式是一种强大的模式匹配工具,用于在文本中查找和匹配特定模式的字符串。在Python中,我们可以使用re模块来操作和处理正则表达式。本篇技术博客将介绍正则表达式的基础语法和re模块的详细使用方法,并通过具体的代码案例来帮助初学者快速掌握正则表达式的使用。正则表达式基础语......
  • 正则表达式使用文档
    通过网站https://regex101.com/可以测试正则表达式的匹配结果及匹配过程.本文章抛开各个编程语言实现差异,仅做正则本身的介绍,会尽量将正则这玩意说明白,使得你看完这边文章后对正则基本可以运用自如.温馨提示,这篇文章会比较长,大致浏览即可.正确的方式是收藏起来,等......
  • SpringBoot + 自定义注解,实现用户操作日志(支持SpEL表达式)
    背景一个成熟的系统,都会针对一些关键的操作,去创建用户操作日志。比如:XX人创建了一条订单,订单号:XXXXXXXXX因为操作人或者订单号是动态的,所以有些开发人员,不知道获取,就将这种操作日志和业务代码融在一起。我们当然要杜绝这种现象,一定会有更好的解决方案。当前项目除了......
  • mybatisplus中按照条件查询的三种方式,常用的是lambda查询,当进行测试查询的时候,可以将
    2023-09-10目录结构 logback.xml<?xmlversion="1.0"encoding="UTF-8"?><configuration></configuration>application.ymlspring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://loca......
  • 中缀后缀表达式
                     ......
  • @Scheduled的cron表达式
    @Scheduled生效条件启动类加上注解@EnableScheduling定时任务的类加上注解@Component或@Service等定时任务的方法加上注解@Scheduledcron表达式┌─────────────second(0-59)│┌─────────────minute(0-59)││┌────────......