Java8,Lambda表达式

Lambda表达式

λ是希腊字母表中第11位字母

实质属于函数式编程

作用

  • 避免匿名内部类定义过多
  • 使代码看起来更加简介
  • 删去无意义代码,留下核心逻辑

函数式接口Functional Interface

函数是接口是Lambda表达式的基础

函数式接口的定义:

  • 只包含唯一一个抽象方法的接口
public interface Runnable{
    public abstract void run();
}
  • lambda表达式可以永远创建函数式接口的对象

Lambda表达式推导

函数式接口:

interface ILike{
    void lambda();
}
  1. 实现类
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println("I like lambda");
    }
}

main方法:

public static void main(String[] args) {
    ILike l = new Like();
    l.lambda();
}
//I like lambda
  1. 静态内部类
static class Like2 implements ILike{
    @Override
    public void lambda() {
        System.out.println("I like lambda2");
    }
}

main方法:

public static void main(String[] args) {
    ILike l = new Like2();
    l.lambda();
}
//I like lambda2
  1. 局部内部类
//在mian方法中
class Like3 implements ILike{
    @Override
    public void lambda() {
        System.out.println("I like lambda3");
    }
}
ILike l = new Like3();
l.lambda();
//I like lambda3
  1. 匿名内部类
ILike l = new ILike(){
    @Override
    public void lambda() {
        System.out.println("I like lambda4");
    }
};
l.lambda();
//I like lambda3
  1. Lambda表达式

()->:括号中是传入参数

ILike l = () -> {
    System.out.println("I like lambda5");
};
l.lambda();
//I like lambda5

简化

Lambda表达式

ILike l = (int a) -> {
    System.out.println("I like lambda");
};
  1. 简化参数类型(多个不同类型的参数也可以去掉参数类型,需要全部取消)
ILove l = (a) -> {
    System.out.println("I like lambda");
};
  1. 简化括号(多行代码时需要花括号包裹)
ILove l = a -> {
    System.out.println("I like lambda");
};
  1. 简化花括号(仅适用于单行代码
ILove l = a -> System.out.println("I like lambda");
posted @ 2022-04-11 16:46  chachan53  阅读(23)  评论(0编辑  收藏  举报