点我

概述

  • lambda表达式是jdk8新增加的一种语法形式,作用:用于简化匿名内部类的代码写法
使用前提

只能简化函数式接口的匿名内部类

格式
(被重写方法的形参列表)->{
    被重写方法的方法体代码
}
demo
package com.xbxaq.lambda_;

public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal(){
            @Override
            public void run() {
                System.out.println("run......");
            }
        };
        animal.run();


        Swimming s = ()->{
            System.out.println("swimming......");
        };
        s.swim();
    }
}


interface Swimming{
    void swim();
}

abstract class Animal{
    public abstract void run();
}

image-20240328183232931

JDk8新特性

省略写法
  • 参数类型可以省略不写
  • 如果只有一个参数,参数类型可以省略,同时()也可以省略
  • 如果lambda表达式中的方法体只有一行代码,可以省略大括号不写,同时要省略分号

    如果这行代码是return语句,也必须去掉return不写

    例如:Arrays.setAll(prices, value -> prices[value] * 08 );

静态方法的引用
  • 类名::静态方法
  • 使用场景:如果某个lambda表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用

例如:Arrays.sort(students, CompareByData::compareByAge);

CompareByData-类名,compareByAge-静态方法名

实例方法的引用
  • 对象名::实例方法
  • 使用场景:如果某个lambda表达式里只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用
特定类型的方法引用
  • 类型::方法
  • 使用场景:l如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定类型的方法引用。
构造器的引用
  • 类名::new
  • 使用场景:如果某个Lambda表达式里只是在创建对象,并且前后参数情况一致,就可以使用构造器引用。
分类: JAVA

评论

-- 评论已关闭 --

目录