Lambda表达式
Lambda表达式
函数式接口
- 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口
- 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
内部类及Lambda表达式实现代码:
package com.lambda;
/**
* 推导lambda表达式
*/
public class LambdaTest01 {
//3、静态内部类
static class Like2 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda2!!!");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//4、局部内部类
class Like3 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda3!!!");
}
}
like = new Like3();
like.lambda();
//5、匿名内部类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4!!!");
}
};
like.lambda();
//6、用lambda简化
like = () -> {
System.out.println("I like lambda5!!!");
};
like.lambda();
}
}
//1、定义一个函数式接口
interface ILike {
void lambda();
}
//2、实现类
class Like implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda!!!");
}
}
带参数的lambda的实现及简化
package com.lambda;
public class LambdaTest02 {
//静态内部类
static class Love implements ILove {
@Override
public void love(int a) {
System.out.println("I Love You -->" + a);
}
}
public static void main(String[] args) {
//ILove love = new Love();
//love.love(1);
//Lambda
ILove love = (int a) -> {
System.out.println("I Love You -->" + a);
};
love.love(100);
//简化1:去掉参数类型
love = (a) -> {
System.out.println("I Love You -->" + a);
};
love.love(101);
//简化2:去掉括号
love = a -> {
System.out.println("I Love You -->" + a);
};
love.love(102);
//简化3:去掉大括号:注意!输出只有一行的情况下
love = a -> System.out.println("I Love You -->" + a);
love.love(103);
}
}
interface ILove {
void love(int a);
}
class Love implements ILove {
@Override
public void love(int a) {
System.out.println("I Love You -->" + a);
}
}

浙公网安备 33010602011771号