什么是lambda表达式
Lambda表达式,也可以称为闭包,是Java 8发布的最新特性。
Lambda允许把函数作为一个方法的参数,使代码变的更加简洁
为什么使用Lambda表达式
避免匿名内部类定义过多,使代码简洁紧凑,留下核心的逻辑
lambda表达式用来创建函数式接口的对象(函数式接口的定义:任何只包含唯一一个抽象方法的接口,就是函数式接口)
lambda表达式的语法格式
(parameters) -> expression 或 (parameters) ->{ statements; }
可选类型声明:不需要声明参数类型,编译器可以统一的识别
可选的参数圆括号:一个参数时无需定义圆括号,但多个参数时需要定义圆括号
可选的大括号:如果主体包含一个语句,就不需要使用大括号,但多个语句时,则需要使用大括号
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回一个数值
代码实现:
1,第一种实现接口的方法:
package com.xing.test;
public class LambdaExpressionTest1 {
public static void main(String[] args) {
ILove iLove = new ILove();
int love = iLove.getLove(1, 2);
System.out.println(love);
}
}
interface Love{
int getLove(int num1,int num2);
}
//1,第一种方法,创建一个类实现接口
class ILove implements Love{
@Override
public int getLove(int num1, int num2) {
return num1+num2;
}
}
2,第二种实现接口的方法,静态内部类
package com.xing.test;
public class LambdaExpressionTest1 {
//2,第二种方法,创建一个静态内部类实现接口
static class ILove implements Love{
@Override
public int getLove(int num1, int num2) {
return num1+num2;
}
}
public static void main(String[] args) {
ILove iLove = new ILove();
int love = iLove.getLove(1, 2);
System.out.println(love);
}
}
interface Love{
int getLove(int num1,int num2);
}
3,第三种实现接口的方法,局部内部类
package com.xing.test;
public class LambdaExpressionTest1 {
public static void main(String[] args) {
//3,第三种方法,创建一个局部内部类实现接口
class ILove implements Love{
@Override
public int getLove(int num1, int num2) {
return num1+num2;
}
}
ILove iLove = new ILove();
int love = iLove.getLove(1, 2);
System.out.println(love);
}
}
interface Love{
int getLove(int num1,int num2);
}
4,第四种实现接口的方法,匿名内部类
package com.xing.test;
public class LambdaExpressionTest1 {
public static void main(String[] args) {
//4,第四种方法,创建一个匿名内部类实现接口
Love love = new Love() {
@Override
public int getLove(int num1, int num2) {
return num1+num2;
}
};
int love1 = love.getLove(1, 2);
System.out.println(love1);
}
}
interface Love{
int getLove(int num1,int num2);
}
5,第五种方法,使用lambda表达式
package com.xing.test;
public class LambdaExpressionTest1 {
public static void main(String[] args) {
//5,第五种方法,创建一个lambda表达式实现接口
Love love2 = (int num1, int num2) ->{
return num1+num2;
};
int love3 = love2.getLove(1, 2);
System.out.println(love3);
}
}
interface Love{
int getLove(int num1,int num2);
}