zoukankan      html  css  js  c++  java
  • Java之lambda表达式

    一、lambda表达式的写法

    package test;
    
    //构造线程的两种方式:1、实现Runnable接口  2、继承Thread类
    public class Test14 {
        public static void main(String[] args) {
            Thread thread = new Thread(new MyThread());
            thread.start();
    
            Thread t2 = new Thread(new Runnable() { //匿名内部类
                public void run() {
                    System.out.println("run2");
                }
            });
            t2.start();
    
            //lambda表达式
            //使用条件:
            //1、花括弧里面必须传的是接口
            //2、接口里只能有一个方法
            //()里代表的是 接口里面的抽象方法传的参数,没有就写()
            //箭头后面的是 抽象方法的内容
            Thread t3 = new Thread(() -> { //传的是接口
                    System.out.println("run3");
                }
            );
            t3.start();
        }
    
    }
    class MyThread implements Runnable{
    
        public void run() {
            System.out.println("run");
        }
    }

    lambda表达式是匿名内部类的简写,匿名内部类是new Thread()对象的简写。

    二、lambda表达式的使用条件

    1、花括弧里面必须传的是接口

    2、接口里只能有一个方法

     

    三、lambda表达式写法的含义

    • ()里代表的是 接口里面的抽象方法传的参数,没有就写()
    • 箭头后面的是 抽象方法的内容
      Thread t3 = new Thread( () -> { //传的是接口
                      System.out.println("run3");
                  }
      );

    四、lambda表达式的简写

    • 如果花括弧里的表达式只有一个,可以不写花括弧,直接写表达式

    • 如果接口的参数只有一个,就可以省略小括弧,直接写参数

    public class Test15 {
        int x = 3;
        int y = 4;
        public static void aoo(Aoo aoo){
            int z =aoo.f(3,4);
            System.out.println(z);
        }
        public static void boo(Boo boo){
            int z =boo.g(3);
            System.out.println(z);
        }
    
        public static void main(String[] args){
            aoo(new Aoo() { //匿名内部类
                @Override
                public int f(int x, int y) {
                    return x*y;
                }
            });
    
            aoo((x,y) -> { //使用lambda表达式
                return x+y;
            });
    
            aoo((x,y) -> x+y+1); //lambda表达式简写,如果花括弧里的表达式只有一个,可以不写花括弧,直接写表达式
            boo(x -> x+3); //lambda表达式简写,如果接口的参数只有一个,就可以省略小括弧,直接写参数
        }
    }
    interface Aoo{
        int f(int x,int y);
    }
    interface Boo{
        int g(int x);
    }

    五、tips小技巧

    使用IntelliJ IDEA这个工具写lambda表达式,如果写的正确,会出现特有标志:

     

    每天进步一点点,快乐生活多一点。
  • 相关阅读:
    拖拽文件上传demo
    JS权限树数据处理demo
    某面试题 a==1&&a==2&&a==3 的解决方案以及涉及知识
    解决forEach函数中异步调用及Promise.all()的基础使用
    基于element ui的el-date-picker 日、周、月粒度切换时间选择器
    基于element ui的el-table-column行内编辑input/select封装
    JavaScript优化技术
    vue-canvas-poster生成海报 jsZip打包称压缩包
    uniapp中使用uView时 TypeError: Cannot read property ‘mark‘ of undefined
    JS中深拷贝数组、对象、对象数组方法
  • 原文地址:https://www.cnblogs.com/yiruliu/p/11134710.html
Copyright © 2011-2022 走看看