国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java8學習教程之lambda表達式語法介紹

Java8學習教程之lambda表達式語法介紹

2021-01-04 16:27tantanit Java教程

眾所周知lambda表達式是JAVA8中提供的一種新的特性,它支持Java也能進行簡單的“函數式編程”。 下面這篇文章主要給大家介紹了關于Java8學習教程之lambda表達式語法的相關資料,需要的朋友可以參考下。

前言

相信大家都知道,在Java8 中引入了 lambda 表達式,從行為參數化的角度,在使用時,將行為作為參數,去除包圍在外層的不必要的類聲明,使代碼更加簡潔。

lambda 表達式的語法

lambda 表達式由參數,->,以及函數體三部分組成。其實函數體可以是表達式,也可以是語句。語句應該包含在{} 里,而表達式不能。

lambda 表達式舉例

?
1
2
3
4
5
6
(List<String> list) -> list.isEmpty() // 布爾類型表達式
() -> new Apple(10) // 創建一個新對象
(Apple a) -> { System.out.println(a.getWeight()); } // 使用一個對象的屬性
(String s) -> s.length() // 選擇或提取一個對象的屬性
(int a, int b) -> a * b // 組合兩個參數
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()) // 比較兩個對象

行為參數化

可以看到,lambda 表達式著重表達了行為。其實在 java8 之前,就已經有類似將行為作為參數進行處理的例子:

?
1
2
3
4
// java.util.Comparator
public interface Comparator<T> {
 public int compare(T o1, T o2);
}
?
1
2
3
4
5
inventory.sort(new Comparator<Apple>() {
 public int compare(Apple a1, Apple a2){
 return a1.getWeight().compareTo(a2.getWeight());
 }
});

在上面的例子中,定義了一個 Comparator 接口,并且定義了 compare 方法。List 類型的 inventory,定義了 sort 方法,該方法以 Comparator 作為參數。在使用時,生成一個匿名或不匿名的 Comparator 對象,該對象實現了 compare 方法,指定了具體的比較行為,再將 Comparator 對象作為參數,傳給 sort 方法。實際上的作用,就是將比較行為,作為參數,傳給 sort 方法,這種思想和做法就叫作“行為參數化”。一個使用的方法(比如 sort 方法)可以對應多種行為,當需要更改行為時,只需要修改表示行為的代碼,使用方不必做出修改,增加了代碼的健壯性。

匿名內部類

而像上面的例子中,直接 new 一個 Comparator 類型對象,而沒有定義一個變量保存該對象的引用,叫做使用匿名內部類。在匿名內部類的情況下,由于方法不能重復使用,可以更加明顯地看到代碼的冗余。因為每次在使用時需要手動 new 一個對象,并且還要寫出 compare 方法的簽名,而真正有用的其實只是 compare 的方法體。在 Java8 中,使用 lambda 表達式,可以簡化這些代碼。比如上面的 sort 方法的使用,可以簡化為:

?
1
inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight() ) );

定義線程的例子:

?
1
2
3
4
5
Thread t = new Thread(new Runnable() {
 public void run(){
 System.out.println("Hello world");
 }
});

可以簡化為:

?
1
Thread t = new Thread(() -> System.out.println("Hello world"));

GUI 中點擊事件的例子:

?
1
2
3
4
5
6
Button button = new Button("Send");
button.setOnAction(new EventHandler<ActionEvent>() {
 public void handle(ActionEvent event) {
  label.setText("Sent!!");
 }
 });

可以簡化為:

?
1
2
Button button = new Button("Send");
button.setOnAction((ActionEvent event) -> label.setText("Sent!!"));

可以看出,lambda 表達式更加簡潔,也可以使開發者在讀寫代碼時,可以更加專注在定義的行為上。

小結

這篇文章介紹了 lambda 表達式的語法,引入 lambda 表達式的使用場景,以及使用 lambda 表達式的好處。我們將在下篇文章中講解如何定義和使用 lambda 表達式,以及與其它語言相比,lambda 表達式在 Java 中的特殊規范。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://tantanit.com/java8-lambda/

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品视频一区二区三区四 | 国产精品亚洲第一区在线暖暖韩国 | 日本一区二区在线观看视频 | 欧美日韩国产一区二区在线观看 | 亚洲欧美一级久久精品国产特黄 | 国产最新视频 | 91av在线视频播放 | 久久久91 | 日韩在线成人 | 精品无码久久久久国产 | 国产精品久久av | 国产精品综合一区二区 | 国产精品一区在线 | 在线一区 | 狠狠操影院 | 中文字幕在线观看免费 | 亚洲欧洲在线观看 | 免播放器看av | 久久久av| 久久美女视频 | 欧美精品一区在线 | 国产成人高清 | 日韩精品91爱爱 | 中日韩黄色大片 | 羞羞视频免费 | 成人精品在线视频 | 午夜成人在线视频 | 一区二区在线不卡 | 日韩国产欧美 | 91久久国产综合久久 | 日韩在线区 | 亚洲精品视频免费 | 中文字幕第七页 | 日本不卡在线 | 国产亚洲综合一区二区 | 99精品免费视频 | 日韩成人精品在线 | 中文字幕日韩视频 | 欧美日韩国产高清 | 精品一区二区三区蜜桃 | 99国产精品99久久久久久 |