一、Lambda表达式简介

什么是Lambda?

Lambda是JAVA 8添加的新特性,说白了,Lambda是一个匿名函数

为什么使用Lambda

使用Lambda表达式可以对一个接口的方法进行非常简洁的实现

Lambda对接口的要求

虽然可以使用Lambda表达式对某些接口进行简单的实现,但是并不是所有的接口都可以用Lambda表达式来实现,要求接口中定义的必须要实现的抽象方法只能是一个

在JAVA8中 ,对接口加了一个新特性:default
可以使用default对接口方法进行修饰,被修饰的方法在接口中可以默认实现

@FunctionalInterface

修饰函数式接口的,接口中的抽象方法只有一个

二、Lambda的基础语法

1.语法

// 1.Lambda表达式的基础语法
// Lambda是一个匿名函数 一般关注的是以下两个重点
// 参数列表 方法体

/**
* ():用来描述参数列表
* {}:用来描述方法体 有时可以省略
* ->: Lambda运算符 读作goes to
* 例 Test t=()->{System.out.println("hello word")}; 大括号可省略
*/

 

2.创建多个接口

/**
* 无参数无返回值接口
* @author Alan
* @version 1.0
* @date 2020-05-27 10:24
*/
@FunctionalInterface
public interface LambdaNoneReturnNoneParmeter {

   void test();
}

/**
* 无返回值有单个参数
* @author Alan
* @version 1.0
* @date 2020-05-27 10:26
*/
@FunctionalInterface
public interface LambdaNoneReturnSingleParmeter {

   void test(int n);
}

/**
* 无返回值 多个参数的接口
* @author Alan
* @version 1.0
* @date 2020-05-27 10:27
*/
@FunctionalInterface
public interface LambdaNoneReturnMutipleParmeter {

   void test(int a,int b);
}

/**
* 有返回值 无参数接口
* @author Alan
* @version 1.0
* @date 2020-05-27 10:28
*/
@FunctionalInterface
public interface LambdaSingleReturnNoneParmeter {

   int test();
}

/**
* 有返回值 有单个参数的接口
* @author Alan
* @version 1.0
* @date 2020-05-27 10:29
*/
@FunctionalInterface
public interface LambdaSingleReturnSingleParmeter {

   int test(int n);
}

/**
* 有返回值 有多个参数的接口
* @author Alan
* @version 1.0
* @date 2020-05-27 10:30
*/
@FunctionalInterface
public interface LambdaSingleReturnMutipleParmeter {

   int test(int a,int b);
}

3.创建测试类

package com.alan.learn.syntax;

import com.alan.learn.interfaces.*;

/**
* @author Alan
* @version 1.0
* @date 2020-05-27 10:33
*/
public class Syntax1 {

   public static void main(String[] args) {
       // 1.Lambda表达式的基础语法
       // Lambda是一个匿名函数 一般关注的是以下两个重点
       // 参数列表 方法体

       /**
        * ():用来描述参数列表
        * {}:用来描述方法体
        * ->: Lambda运算符 读作goes to
        */

       // 无参无返回  
       LambdaNoneReturnNoneParmeter lambda1=()->{
           System.out.println("hello word");
      };
       lambda1.test();

       // 无返回值 单个参数
       LambdaNoneReturnSingleParmeter lambda2=(int n)->{
           System.out.println("参数是:"+n);
      };
       lambda2.test(10);

       // 无返回值 多个参数
       LambdaNoneReturnMutipleParmeter lambda3=(int a,int b)->{
           System.out.println("参数和是:"+(a+b));
      };
       lambda3.test(10,12);

       // 有返回值 无参数
       LambdaSingleReturnNoneParmeter lambda4=()->{
           System.out.println("lambda4:");
           return 100;
      };
       int ret=lambda4.test();
       System.out.println("返回值是:"+ret);

       // 有返回值 单个参数
       LambdaSingleReturnSingleParmeter lambda5=(int a)->{
           return a*2;
      };
       int ret2= lambda5.test(3);
       System.out.println("单个参数,lambda5返回值是:"+ret2);

       //有返回值 多个参数
       LambdaSingleReturnMutipleParmeter lambda6=(int a,int b)->{
           return a+b;
      };
       int ret3=lambda6.test(12,14);
       System.out.println("多个参数,lambda6返回值是:"+ret3);
  }
}

输出结果:
   hello word
参数是:10
参数和是:22
lambda4:
返回值是:100