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場景用處不大,在大資料更改方法中重要