前言:
👏作者簡介:我是笑霸final,一名熱愛技術的在校學生。
📝個人首頁:笑霸final的首頁 📕系列專欄::本文寫在java專欄 📧如果文章知識點有錯誤的地方,請指正!和大家一起學習,一起進步👀
🔥如果感覺部落客的文章還不錯的話,👍點贊👍 + 👀關注👀 + 🤏收藏🤏
淺學lamada表達式&函數式接口
- 一、 lamada簡介
- 二、文法格式
- 三、淺看使用方式
- 使用方式1 ==無參、無傳回值==
- 使用方式2 ==需要一個參數、無傳回值==
- 使用方式3 ==資料省略類型==
- 使用方式4 ==小括号省略式==
- 使用方式5 ==多個參數,有傳回值==
- 使用方式6 ==省略return==
- 四、總結,引出函數式接口
- 五、函數式接口
- 5.1自己寫函數式接口
- 5.2Java内置四大核心函數式接口
一、 lamada簡介
lamada是Java8的一個新特性。
Lambda 表達式,也可以稱為閉包,它是推動 Java 8 釋出的最重要的新特性。
lamada是一個匿名函數,可以了解為一段可以傳遞的代碼。提升java語言表達能力!
本質:lamada就是函數式接口的實列
對接口的要求:隻有一個抽象方法(函數式接口)。
二、文法格式
(參數) ->表達式
或者
(參數) -> {語句; }
代碼實列講解
public class java1 {
public static void main(String[] args) {
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("我是笑霸final");
}
};
r1.run();
System.out.println("/*******************lamada重寫*********************/");
Runnable r2= () -> System.out.println("支援笑霸final");
r2.run();
}
結果:
代碼分析
三、淺看使用方式
使用方式1 無參、無傳回值
這種方式就是上面的列題的方式;
使用方式2 需要一個參數、無傳回值
使用方式3 資料省略類型
因為可由編譯器推測出稱為類型推斷
public class LamadaTest1 {
public static void main(String[] args) {
Consumer<String> t=(s)-> {
System.out.println(s);
};
t.accept("類型推斷");
}
}
因為 Consumer<String> 中<>裡面已經有類型了 那麼參數清單就可以省略
使用方式4 小括号省略式
當lamada隻有一個參數時,參數的小括号可以省略
public class LamadaTest1 {
public static void main(String[] args) {
Consumer<String> t= s -> {
System.out.println(s);
};
t.accept("類型推斷,小括号可以省略");
}
}
使用方式5 多個參數,有傳回值
public class LamadaTest1 {
public static void main(String[] args) {
Comparator<Integer> T= (t1,t2) -> {
System.out.println(t1);
System.out.println(t2);
return t1.compareTo(t2);
};
System.out.println(T.compare(10, 12));
}
}
使用方式6 省略return
當lamada體隻有一條語句時,return和大括号都可以省略
public class LamadaTest1 {
public static void main(String[] args) {
Comparator<Integer> T= (t1,t2) -> t1.compareTo(t2);
System.out.println(T.compare(10, 12));
}
}
四、總結,引出函數式接口
箭頭的左邊:
1.參數類型可以省略(類型推斷)
2.如果參數有且隻有一個,()這個也可以省略
箭頭的右邊:
1.lamada體 隻有一條語句 大括号可以省略以及return關鍵字
1.1:有return的情況 ,在滿足1的情況下如果大括号省略了return一定要省略
對接口的要求:隻有一個抽象方法(函數式接口)。
五、函數式接口
1.隻包含一個抽象方法的接口,稱為函數式接口。
2.你可以通過Lambda表達式來建立該接口的對象。(若Lambda表達式抛出一個受檢異常,那麼該異常需要在目标接口的抽象方法上進行聲明)。
3.我們可以在任意函數式接口上使用@FunctionalInterface注解,這樣做可以檢查它是否是一個函數式接口,同時javadoc也會包含一條聲明,說明這個接口是一個函數式接口。
5.1自己寫函數式接口
@FunctionalInterface
interface my{
void method1();
}
@FunctionalInterface隻是檢驗作用
寫好後 我們就可以自己寫lamada表達式了
public class LamadaTest1 {
public static void main(String[] args) {
my my=()-> System.out.println("自己的函數式接口");
my.method1();
}
}