7.Lambda表达式
/*
实现Lambda表达式的前提: 1必须是函数式接口。也就是说只能有一个方法
下面是正常的演变从1到6
*/
package com.wen.lambda;
/**
* @Author WangEn
* @CreateTime: 2021-04-10-14-37
* @Emile: wen_5988@163.com
*/
// 推导Lambda表达式
public class TestLambda {
//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(); // 需要注意*****************************
//4. 简化成局部内部类
/*class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("i like lambda3");
}
}
Like3 like2 = new Like3();
like2.lambda();*/
// 5.匿名内部类,没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lambda() {
System.out.println("i like Lambda5");
}
};
like.lambda();
// 6.Lambda成型
like = ()-> { // like就是*上面注意实现类的指向
System.out.println("i like Lambda6");
};
like.lambda();
}
}
// 1.定义一个函数式接口
// 函数式接口就是,只能有一个方法
interface ILike{
void lambda();
}
// 2.实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like Lambda");
}
}
7.1Lambda带参数类型
package com.wen.lambda;
/**
* @Author WangEn
* @CreateTime: 2021-04-10-15-17
* @Emile: wen_5988@163.com
*/
public class TestLambda2 {
public static void main(String[] args) {
ILove love = null; // 注意********************
// 简化 1
love = (a,b) -> {
System.out.println("I Love you " + a+b);
};
love.love(5,8);
// 简化 2
love = (a,b) -> System.out.println("I Love Lambda" + (a*b));
love.love(2,3);
/**
* 总结:
* lambda表达式只能有一行代码的情况下才能简化成一行,如果有多行,就只能用代码块包裹
* 前提是接口为函数式接口
* 多个参数也可以去掉参数类型
*/
}
}
interface ILove{
void love(int a,int b);
}