日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Nutshell中的Java 8语言功能-第1部分

發布時間:2023/12/3 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nutshell中的Java 8语言功能-第1部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你好朋友,

Java 8發布已經很長時間了,現在越來越多地被使用。 在本文中,我們將討論以下Java 8主題。

1.功能接口

2,Lambda表達式

3.默認方法

1.功能界面

什么是功能接口?

與一種并且只有一種抽象方法的接口是功能接口,因為它恰好表示一種功能。 但是,功能接口可以具有n個默認值以及靜態方法。

功能接口的語法

就像其他任何界面一樣。 唯一的區別是它應該在頂部具有@FunctionalInterface批注。

@FunctionalInterface interface fly {}

此外,我們需要了解,即使我們不使用@FunctionalInterface批注,但是一個接口只有一個抽象方法,則默認情況下該接口將被視為Functional Interface,但始終建議使用@FunctionalInterface批注用于功能界面。

放置@FunctionalInterface批注的好處是,今天,您可以通過僅在其中使用一種抽象方法而不使用@FucntionalInterface批注來定義接口為“函數接口”,并牢記可以為此函數接口編寫lambda,但是如果您使用一個項目,并且有很多開發人員在該項目上工作,那么以后很有可能有人可以向您的功能接口添加另一種方法,該方法實際上將不會保留為功能接口,因為它將具有多個抽象方法,同時,也會破壞所有已經編寫的lambda表達式。

因此,如果您打算編寫一個可以使用其編寫lambda的接口,則最好使用@FunctionalInterface對其進行標記。

功能界面的主要目的

在Java 8中引入功能接口的主要目的是允許針對功能接口編寫lambda表達式,因為針對功能接口的方法驗證了lambda表達式方法簽名。

功能界面示例

@FunctionalInterfacepublic interface Calculator {int add(int a, int b); }public class Test {public static void main(String[] args){Calculator calculator = (a,b) -> a + b;System.out.println("Sum is:"+ calculator.add(4,6));}}

JDK 1.8在java.util.function包中添加了許多內置的Functional Interface,可用于編寫lambda表達式。

謂語

消費者

供應商

功能

2. Lambda表達式

Lambda表達是什么?

簡單地說,Lambda表達式是功能接口方法的實現。 通常,我們在方法中編寫實現,但是在使用lambda的情況下,沒有編寫方法的編寫,因此我們可以將lambda表達式視為匿名函數,即具有實現但沒有任何名稱的函數。

Lambda表達式的語法?

(Comma separated parameters)? + arrow symbol + single? expression or block of statements;

Lambda表達的主要目的

在Java 8中引入Lambda表達式的主要原因是要在Java中啟用函數式編程。 在Java 8之前,如果我們想擁有一些要內聯執行的功能,例如單擊按鈕,并且將此代碼放在單獨的類中沒有意義,那么我們可以通過創建一個匿名類來實現。 在這些情況下,我們通常試圖將功能作為參數傳遞給另一種方法,例如當某人單擊按鈕時應采取什么措施。 匿名類的問題在于,即使我們的實現非常小,使用匿名類編寫的代碼也非常冗長和不清楚。 使用lambda表達式,我們可以以更具可讀性和簡潔的方式編寫代碼。

Lambda表達式示例

讓我們看看如何編寫lambda表達式。

從上面的示例中,我們有以下界面:

@FunctionalInterfacepublic interface Calculator {int?add(int a,int b);}

Lambda表達式是從Functional接口的方法派生的,因此使用add方法的簽名,我們將編寫第一個Lambda表達式。 括號內的左側是參數,然后是箭頭符號,然后是一個語句塊。

(int a,int b) -> {return a + b;};

如果仔細觀察,它是沒有任何方法名稱的方法定義。 假設它有一個名稱,然后在刪除箭頭符號后將如下所示:

add(int a,int b) {return a?+ b;};

現在將其轉換為Lambda時,Java設計人員刪除了名稱,即在參數后添加箭頭符號,使它變為如下所示:

(int a,int b) ->{return a?+ b;};

現在,由于編譯器通過將lambda表達式的簽名與Functional Interface方法的簽名進行匹配來檢查lambda表達式的簽名,因此,編譯器可以通過檢查Functional Interface方法來猜測lambda表達式中傳遞的參數的類型。 因此,我們可以從參數中刪除類型,以便修改后的lambda表達式如下所示:

(a, b) -> {return a?+ b;};

除了猜測參數的類型之外,編譯器還將通過查看函數接口中聲明的方法的返回類型來了解該lambda表達式將返回int值,因此我們也可以刪除return關鍵字。

(a, b) -> {a?+ b;};

現在,因為在上面的lambda表達式中,我們在塊中只有一個語句,所以我們也可以刪除花括號,因此修改后的lambda如下所示:

(a,b) -> a?+b;

3.界面中的默認方法

什么是默認方法?

默認方法是具有一些默認實現的方法,可以在接口中定義。

在Java8之前,我們無法在接口中使用帶有定義的方法,但是在Java8中,我們也可以在接口中使用帶有定義的方法,但是這些都是特殊的方法,因為它們的簽名中帶有default關鍵字。 。

引入默認方法的主要目的

在Java中添加默認方法的主要原因是使代碼向后兼容,即使在現有接口中引入了新方法時也是如此,因為如果不存在默認方法,我們將嘗試在現有接口中添加新方法,它將破壞所有實現類,因為那些現有的實現類必須在接口中實現新引入的方法。

默認方法的語法

public interface InterfaceTest{default public void testDefault(){}}

默認方法示例

自JDK 1.5以來,JDK 1.8版本中就遵循了默認的新方法,從而提供了可迭代的接口。 現在,隨著Collection接口擴展了此可迭代接口以及List等集合,Set擴展了Collection接口,此方法默認情況下可用于這些集合以迭代這些集合的元素。

public interface Iterable<T> {default void forEach(Consumer<? super T>action) {Objects.requireNonNull(action);for (T t : this) {action.accept(t);}}}

如果該方法不是默認方法,并且已經添加到Iterable接口,它將強制所有實現此接口的類(通過Collection接口)來實現此方法,因此將破壞所有這些類。 因此,為了在不破壞現有代碼的情況下使類似于forEach方法的代碼起作用,JDK 1.8中引入了默認方法。

感謝您閱讀Java 8語言功能。如果您認為它有用,請共享它,以便其他人也可以從中受益。

翻譯自: https://www.javacodegeeks.com/2018/06/java-8-language-features-nutshell-part-1.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Nutshell中的Java 8语言功能-第1部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 四虎在线免费观看视频 | 在线免费不卡视频 | 国产美女性生活 | 国产视频在线观看免费 | 欧美特级黄色片 | 欧美视频一二区 | 精品不卡一区 | 天天操天天操天天操天天操天天操 | 国内黄色一级片 | 日韩二区 | 午夜av免费在线观看 | 91精品国产一区二区无码 | 亚洲成色在线 | 成人在线观看免费高清 | 黄色在线播放视频 | 成人国产精品免费观看视频 | 欧美日韩国语 | 精品人妻无码在线 | 免费动漫av | 中文字幕第88页 | av手机版| 在办公室被c到呻吟的动态图 | 国产成人超碰人人澡人人澡 | 人人搞人人爱 | 欧美在线免费 | 欧美一级黄色片网站 | 亚洲精品在 | 国产av无毛 | 在线观看国产欧美 | 爆操白虎 | 色免费看 | 懂色av一区二区三区免费 | 亚州激情 | 日本黄色三级视频 | 久久久久国产精品一区 | 一区二区三区视频免费观看 | 最新av中文字幕 | 日本特黄一级 | 国产毛片毛片毛片 | 一级黄色电影片 | 久久天堂av | 美国免费黄色片 | 国产黄色一区二区 | 爱的色放韩国电影 | 涩涩的视频在线观看 | 亚洲精品日产精品乱码不卡 | 强乱中文字幕 | 日韩成人在线观看视频 | 人人妻人人澡人人爽 | 亚洲少妇一区二区三区 | 国产新婚疯狂做爰视频 | 日本另类视频 | 自拍偷拍国内 | 蜜桃av导航 | 一区二区三区久久久 | 7777精品久久久久久 | 粉嫩小箩莉奶水四溅在线观看 | а√中文在线资源库 | 国产真实老熟女无套内射 | 成人小视频在线看 | 97少妇| 欧美激情四区 | 91久久 | 国产又大又粗又爽 | 亚洲国内自拍 | 日批视屏| 亚洲精品日日夜夜 | 国产精品色悠悠 | 一二三区视频 | 秒拍福利视频 | 91看大片| 黄色福利网 | 国产夫绿帽单男3p精品视频 | 一曲二曲三曲在线观看中文字幕动漫 | 97在线播放免费观看 | 日日爱夜夜操 | 在线观看国产黄色 | 国产女人在线视频 | 夜夜躁狠狠躁日日躁av | 免费黄色小视频网站 | 国产av无码专区亚洲av麻豆 | 久久人妻一区二区 | 亚洲国产精品综合久久久 | xxxwww18| 蜜桃在线一区二区 | 亚洲精品鲁一鲁一区二区三区 | 国产在线视频99 | 日韩视频在线观看免费视频 | 玖玖爱精品 | 一级空姐毛片 | 久久国产精品二区 | 欧美激情另类 | 日本aⅴ片| 波多野结衣精品视频 | 日韩大胆视频 | 法国空姐在线观看完整版 | 三上悠亚ed2k | 国产肉丝在线 | 日本a级一区|