package com.atguigu;
interface MyInterface{
int sum(int i,int j);
}
interface Myhaha{
int haha();
}
//检查注解,帮我们快速检查我们写的接口是否函数式接口
@FunctionalInterface
interface Myhehe{
int hehe(int i);
}
//1.自己写实现类
class MyInetfaceImpl implements MyInterface{
@Override
public int sum(int i,int j){
return i+j;
}
}
public class Lambda {
public static void main(String[] args) {
//1.自己创建实现类对象
MyInterface my=new MyInetfaceImpl();
System.out.println(my.sum(2,3));
//2、创建匿名实现类对象
MyInterface myInterface = new MyInterface() {
@Override
public int sum(int i, int j) {
return i+j;
}
};
System.out.println(myInterface.sum(1,2));
//3、lambda表达式:语法糖 参数列表 + 箭头 + 方法体
MyInterface myInterface1=(x,y)->{return x*y;};
System.out.println(myInterface1.sum(2,3));
//参数位置最少情况
Myhaha myhaha=()->{return 1;};
System.out.println(myhaha.haha());
Myhehe myhehe=y->{return y*y;};
System.out.println(myhehe.hehe(4));
Myhehe myhehe1=y->y+1;
System.out.println(myhehe1.hehe(114514));
//完整写法如上:
//简化写法:
//1)、参数类型可以不写,只写(参数名),参数变量名随意定义;
// 参数表最少可以只有一个 (),或者只有一个参数名;
//2、方法体如果只有一句话,{} 可以省略
Myhehe hehe3 = y -> y + 1;
System.out.println(hehe3.hehe(7));
//以上Lambda表达式简化了实例的创建。
//总结:
// 1、Lambda表达式: (参数表) -> {方法体}
// 2、分辨出你的接口是否函数式接口。 函数式接口就可以lambda简
}
}
重点:函数式编程
可能在开发crud场景用处不大,在大数据更改方法中重要