package com.lidl.com.lidl.web;
/**
* 函数式编程
* 函数式接口:任何接口只包含一个抽象方法 那么这个接口就是函数是接口
* 对于函数式接口我们可以通过lambda表达式创建接口对象
*
*推导lambda表达式
*
*
*/
public class Lambda2 {
//22静态内部类
static class Love2 implements Ilove{
@Override
public void lambda(int a) {
System.out.println("i like lambda"+a);
}
}
public static void main(String[] args) {
//11最平常的方式调用
Ilove love = new Love();
love.lambda(1);
//22静态内部类
love = new Love2();
love.lambda(2);
//33局部内部类
class Love3 implements Ilove{
@Override
public void lambda(int a) {
System.out.println("i like lambda"+a);
}
}
love = new Love();
love.lambda(1314);
//44匿名内部类 没有类的名称 必须借助接口或者父类
love = new Ilove() {
@Override
public void lambda(int a) {
System.out.println("i like lambda"+a);
}
};
love.lambda(520);
//55用lambda简化
love = (int a)-> {
System.out.println("i like lambda"+a);
};
love.lambda(521);
//简化55 参数类型
love = (a)->{System.out.println("i like lambda"+a);
};
love.lambda(5521);
//简化简化55 简化括号
love = a->{System.out.println("i like lambda"+a);
};
love.lambda(55521);
//简化简化55 简化花括号
love = a->System.out.println("i like lambda"+a);
love.lambda(555521);
//总结
//lambda 表达式只能有一行代码的情况下才能简化成一行,如果有多行必须用代码块包括
//前提接口是函数式接口
//多个参数也可以去掉参数类型,必须加上括号,逗号分隔
}
}
//1定义一个函数式接口
interface Ilove{
void lambda(int a);
}
//2实现类
class Love implements Ilove{
@Override
public void lambda(int a) {
System.out.println("i like lambda"+a);
}
}