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

Lamda表达式

时间:2022-11-05 20:57:19浏览次数:50  
标签:Lamda run void test public 表达式 Lambda

Lamda表达式

  • 避免匿名内部类定义过多;使得代码简洁

  • 其实质属于函数式编程的概念

(params)->expression[表达式]
(params)->statement[语句]
(params)->{statements}

函数式接口

  • 任何接口,如果只包含一个抽象方法,那么它就是一个函数式接口。比如Runnable就是一个函数式接口。
  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象

Lambda表达式推导

外部类——>静态内部类——>局部内部类——>匿名内部类——>Lambda表达式

  • 外部类

    public class lambdaDemo {
        public static void main(String[] args) {
            Lambda test = new Test();
            test.run();
        }
    }
    
    //定义一个函数式接口:只有一个抽象方法
    interface Lambda{
        void run();
    }
    
    //外部类
    class Test implements Lambda{
        @Override
        public void run() {
            System.out.println("普通方法");
        }
    }
    
  • 静态内部类

    public class lambdaDemo {
        //静态内部类
        static class Test implements Lambda{
            @Override
            public void run() {
                System.out.println("静态内部类");
            }
        }
        public static void main(String[] args) {
            Lambda test = new Test();
            test.run();
        }
    }
    
    //定义一个函数式接口:只有一个抽象方法
    interface Lambda{
        void run();
    }
    
  • 局部内部类:在方法里

    public class lambdaDemo {
        public static void main(String[] args) {
            //局部内部类
            class Test implements Lambda{
                @Override
                public void run() {
                    System.out.println("局部内部类");
                }
            }
            Lambda test = new Test();
            test.run();
        }
    }
    
    //定义一个函数式接口:只有一个抽象方法
    interface Lambda{
        void run();
    }
    
  • 匿名内部类

    public class lambdaDemo {
        public static void main(String[] args) {
            //匿名内部类
            Lambda test = new Lambda() {
                @Override
                public void run() {
                    System.out.println("匿名内部类");
                }
            };
            test.run();
        }
    }
    
    //定义一个函数式接口:只有一个抽象方法
    interface Lambda{
        void run();
    }
    
  • Lambda表达式

    public class lambdaDemo {
        public static void main(String[] args) {
            //Lambda表达式
            Lambda test = ()->{
                    System.out.println("Lambda表达式");
            };
            test.run();
        }
    }
    
    //定义一个函数式接口:只有一个抽象方法
    interface Lambda{
        void run();
    }
    

    注意:方法里只有一条语句,可以简化花括号

    public class lambdaDemo {
        public static void main(String[] args) {
            //Lambda表达式
            Lambda test = ()-> System.out.println("Lambda表达式");
            test.run();
        }
    }
    
    //定义一个函数式接口:只有一个抽象方法
    interface Lambda{
        void run();
    }
    

Lambda简化规则

  • 可以简化参数类型
  • 如果只有一个参数,可以去掉()
  • 如果只有一条语句,可以去掉{}

使用Lambda表达式创建多线程

public class lambdaDemo {
    public static void main(String[] args) {
        //匿名内部类+Lambda
       new Thread(()-> System.out.println("线程开启")).start();
    }
}

标签:Lamda,run,void,test,public,表达式,Lambda
From: https://www.cnblogs.com/xiluoluo/p/16861244.html

相关文章

  • 1106. 解析布尔表达式
    给你一个以字符串形式表述的 布尔表达式(boolean)expression,返回该式的运算结果。有效的表达式需遵循以下约定:"t",运算结果为True"f",运算结果为False"!(expr)",运算过程......
  • AOP-简介,面向切面编程好处,AOP编程术语,AspectJ(通知类型,切入点表达式)
    AOP概述1.AOP简介AOP(AspectOrientProgramming),面向切面编程。面向切面编程是从动态角度考虑程序运行过程。AOP底层,就是采用动态代理模式实现的。采用了两种代......
  • Leetcode第1106题:解析布尔表达式(Parsing a boolean expression)
    解题思路看到表达式求解,自然想到栈。从左至右遍历布尔表达式expression,对于不同类型字符,进行不同操作:逗号,,跳过该字符;不是逗号,和右括号),入栈;如果是右括号),则一个表......
  • 1106. 解析布尔表达式
    1106.解析布尔表达式给你一个以字符串形式表述的 布尔表达式(boolean)expression,返回该式的运算结果。有效的表达式需遵循以下约定:"t",运算结果为True"f",运算结果为......
  • [LeetCode] 1106. 解析布尔表达式
    思路从题目中可以得出,一个表达式是通过n(n>=1)个表达式并列、嵌套而成。其实很像前缀表达式。这样我们很容易想到通过递归的方式来做,递归的边界条件就是"t"或者"f"......
  • 1106. 解析布尔表达式
    1106.解析布尔表达式classSolution{intindex;char[]ch;publicbooleanparseBoolExpr(Stringexpression){ch=expression.toCharArray(......
  • 内部类和lambda表达式
    如果有一个接口A,A里有eat()抽象方法,想要调用这个抽象方法,用传统模式就要写一个实现类B并重写eat()方法,再创建B对象调用这个方法如果用内部类可以简化代码量先定义两个接口......
  • java正则表达式
    参考:https://www.cnblogs.com/klb561/p/10850803.html1匹配验证-验证Email是否正确publicstaticvoidmain(String[]args){//要验证的字符串Stringstr=......
  • 按照 ExpressionVisitor 抽象类 思路 重新实现表达式 从左到右 递归解析 解决参数编号
     核心递归方法根据表达式类型跳转到具体的处理方法处理完后返回null跳出循环///<summary>///访问///</summary>///<pa......
  • 最全的常用正则表达式大全
    很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。......