示例一:
package Lanmbda;
/**
* TestLambda1
*
* @author Lizq
* @date 2021/12/11 15:38
* 推导lamda表达式
*/
public class TestLambda1 {
//3. 静态内部类
static class Like2 implements ILike {
@Override
public void lamda() {
System.out.println("I like lamda2");
}
}
public static void main(String[] args) {
//4.局部内部类
class Like3 implements ILike {
@Override
public void lamda() {
System.out.println("I like lamda3");
}
}
ILike like1 = new Like1();
like1.lamda();
ILike like2 = new Like2();
like2.lamda();
ILike like3 = new Like3();
like3.lamda();
//5.匿名内部类,没有类的名称 必须借助接口或者父类
ILike like4 = new ILike () {
@Override
public void lamda() {
System.out.println("I like lamda4");
}
};
like4.lamda();
//6.lambda简化
like4 = ()->{
System.out.println("I like lamda5....");
};
like4.lamda();
}
}
// 1.定义一个函数式接口
interface ILike {
void lamda();
}
// 2.实现类
class Like1 implements ILike {
@Override
public void lamda() {
System.out.println("I like lamda1");
}
}
示例二:
package Lanmbda;
/**
* TestLambda2
*
* @author Lizq
* @date 2021/12/11 15:55
*/
public class TestLambda2 {
public static void main(String[] args) {
/* // 1.lamda
ILove love = (int a) -> {
System.out.println("I love you -->" + a);
};
// 2.lamda简化1.0
love = (a) -> {
System.out.println("I love you -->" + a);
};
// 3.lamda简化2.0
love = a -> {
System.out.println("I love you -->" + a);
};
*/
// 4.lamda简化3.0
ILove love = a -> System.out.println("I love you -->" + a);
love.love(520);
/**总结:
* {}简略的条件是只能有一行代码,多行{}就不能简略了
* 前提是接口为函数式接口(只能有一个方法)
* 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上()
*/
}
}
interface ILove {
void love(int a);
}