一、介绍
- 什么是Lambda
- Lambda是Java8添加的新特性,说白了,Lambda是一个匿名函数
- 为什么使用Lambda
- 使用Lambda表达式可以对一个接口的方法进行非常简介的实现
- Lambda对接口的要求
- 虽然可以使用Lambda表达式对某些接口进行简单的实现,但是并不是所有的接口都可以用Lambda表达式来实现,要求接口中定义的必须要实现的抽象方法只能是一个
- default
- 在Java8中,对接口加了一个新特性:default。可以使用default对接口进行修饰,被修饰的方法在接口中可以默认实现
一、函数式编程思想
函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”,而我们要学习的Lambda表达式就是函数式思想的体现
二、Lambda表达式的标准格式
一、格式
(parameters) -> expression
或
(parameters) -> {statements;}
- ()用来描述参数列表
- {}用来描述方法题,有时可以省略
- ->lambda运算符
二、前提
有一个接口,且接口中有且仅有一个抽象方法
三、实例
/**
* 无参无返回值接口
*/
@FunctionalInterface
interface LambdaNoneReturnNoneParmeter{
void test();
}
/**
* 无返回值有单个参数
*/
@FunctionalInterface
interface LambdaNodeReturnSingleParmeter{
void test(int n);
}
/**
* 无返回值,多个参数的接口
*/
@FunctionalInterface
interface LambdaNodeReturnMutipleParmeter{
void test(int a,int b);
}
/**
* 有返回值,无参数接口
*/
@FunctionalInterface
interface
LambdaSingleReturnNoneParmeter{
int test();
}
/**
* 有返回值 有单个参数的接口
*/
@FunctionalInterface
interface LambdaSingleReturnSingleParmeter{
int test(int n);
}
/**
* 有返回值 有多个参数的接口
*/
@FunctionalInterface
interface LambdaSingleReturnMutipleParmeter{
int test(int a, int b);
}
public class Demo {
public static void main(String[] args) {
// 需求1:无参数无返回值
LambdaNoneReturnNoneParmeter lambda1 = () ->{
System.out.println("hello worle");
};
lambda1.test();
// 需求2:无返回值 单个参数
LambdaNodeReturnSingleParmeter lambda2 = (str) ->{
System.out.println("参数是:"+str);
};
lambda2.test(10);
// 需求3:无返回值 多个参数
LambdaNodeReturnMutipleParmeter lambda3 = (int a, int b)->{
System.out.println("参数和是:"+(a+b));
};
lambda3.test(10,20);
// 需求4: 有返回值,无参数
LambdaSingleReturnNoneParmeter lambda4 = () ->{return 66;};
int result4 = lambda4.test();
System.out.println(result4);
// 需求5:有返回值 单个单数
LambdaSingleReturnSingleParmeter lambda5 = (int a)->{return a*2;};
int result5 = lambda5.test(10);
System.out.println(result5);
// 需求6:有返回值 多个参数
LambdaSingleReturnMutipleParmeter lambda6 = (int a, int b)->{return a+b;};
int result6 = lambda6.test(10,20);
System.out.println(result6);
}