推导lambda
package test;
/*
推到lambda
*/
import static java.lang.System.*;
public class testlamda1 {
//3. 静态内部类
static class Like2 extends Like implements Ilike {
@Override
public void lambda() {
out.println("i like javaee");
}
public static void main(String[] args) {
Ilike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//4.局部内部类
class Like3 extends Like implements Ilike {
@Override
public void lambda() {
out.println("i like spring ");
}
}
like = new Like3();
like.lambda();
// 5。匿名内部类(没有类的名称,必须借助接口或父类)
like = new Ilike(){
@Override
public void lambda() {
out.println("i like maven");
}
};
like.lambda();
// 6. lambda简化
like = ()->{
out.println("i like javase ");
};
like.lambda();
}
}
//1. 定义一个函数式接口
interface Ilike {
void lambda();
}
// 2. 实现类
static class Like implements Ilike {
@Override
public void lambda() {
out.println("i like java");
}
}
}
例1
package test;
public class testlambda2 {
public static void main(String[] args) {
ILove love = (int a)->{
System.out.println("i love number"+a);
};
love.love(14);
}
}
interface ILove{
void love(int a);
}
简化
package test;
public class testlambda2 {
public static void main(String[] args) {
// 简化1
ILove love = null;
love = a -> {
System.out.println("i love "+a);
};
love.love(5);
// 简化2
love = a -> System.out.println("i love aa"+a);
love.love(520);
}
}
interface ILove{
void love(int a);
}
注意:
- 代码有多行不能去掉花括号(简化2)== 只能由一行代码
- 必须是函数是接口(接口里只有一个方法)