侧边栏壁纸
  • 累计撰写 135 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

lambda表达式

概述

  • 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表达式里只是在创建对象,并且前后参数情况一致,就可以使用构造器引用。
0
博主关闭了所有页面的评论