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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java 8的8个新功能

發(fā)布時間:2023/12/3 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 8的8个新功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

注意:確保還檢查了我們的詳細(xì)教程Java 8 Features – ULTIMATE Guide 。

Jdk 1.8(又名Java 8)今天發(fā)布,這意味著它的通用發(fā)布版本已經(jīng)公開發(fā)售,開發(fā)人員可以從早期發(fā)布版本切換到經(jīng)過測試的版本以供生產(chǎn)使用。 但是,對于繁忙的Java開發(fā)人員來說,這對您意味著什么? 好吧,我總結(jié)了一些要標(biāo)記此版本的要點(diǎn):

1.Lamda表達(dá)式

我從lambda表達(dá)式開始,因為它可能是Java 5中的Generics / Annotations之后的語言中最受歡迎的功能。

語法如下:

(argtype arg...) -> { return some expression.. probably using these arguments }

它的作用是減少明顯的代碼,例如在匿名內(nèi)部類中。 (搖擺動作處理程序變得很性感,是的!)

因此,線程可以更改為:

Runnable oldRunner = new Runnable(){public void run(){System.out.println("I am running");} }; Runnable java8Runner = () ->{System.out.println("I am running"); };

與Scala相似,在Lambda中也可以進(jìn)行類型推斷。 考慮以下可用示例:

Comparator c = (a, b) -> Integer.compare(a.length(), b.length());

在此,當(dāng)實現(xiàn)compare方法時,可以推斷出a,b的類型(在這種情況下為Comparator接口的String)。

用于將塊與參數(shù)分開的符號->與Scala中已經(jīng)使用的=>非常相似,如果您擅長使用該符號,則沒有太多理由進(jìn)行切換,因為您會感覺到lambda在Java中的實現(xiàn)方式不充分(和冗長),但是對于一個優(yōu)秀的'ol Java程序員來說,這是要走的路。

2.通用類型的更改和改進(jìn)

從Lambdas獲得線索后,通用集合還可以推斷要使用的數(shù)據(jù)類型。 例如,使用通用集合的方法無需指定通用類型。 因此,以下方法

SomeClass.method();

可以簡單地忽略類型信息而調(diào)用:

SomeClass.method();

可以通過方法簽名來推斷類型,這對于嵌套調(diào)用(如

myCollection.sort().removeUseless().beautify();

3.流集合類型(

流是一個迭代器,它允許對其調(diào)用的集合進(jìn)行單次運(yùn)行。 與Lambdas一起,這是另一個值得關(guān)注的功能。 您可以使用流對集合執(zhí)行諸如Filer或map / reduce的功能性操作,這些集合可以使用Stream對象作為單個元素進(jìn)行流式處理。 流可以根據(jù)需要順序或并行運(yùn)行。 并行模式利用fork / join框架,可以利用多個內(nèi)核的功能。

例:

List guys = list.getStream.collect(Collectors.toList())

也可以并行實現(xiàn)為

List guys = list.getStream.parallel().collect(Collectors.toList()

將集合減少為單個項目的另一個不錯的示例是調(diào)用reduce algorithem。

int sum = numberList.stream().reduce(0, (x, y) -> x+y);

要么,

int sum = numberList.stream().reduce(0, Integer::sum);

4.功能接口(

這些接口包含一些不需要實現(xiàn)的默認(rèn)方法,可以直接從該接口運(yùn)行。 這對現(xiàn)有代碼有幫助-更改接口不必使實現(xiàn)它的所有類都實現(xiàn)新方法。 這類似于Scala中的Traits,功能接口將與lambda兼容。

5. Nashorn –

這是使我們能夠在JVM上運(yùn)行javascript的javascript引擎。 它類似于運(yùn)行Node.js的chrome提供的V8引擎。 它與Node.js應(yīng)用程序兼容,同時還允許服務(wù)器上運(yùn)行的javascript代碼調(diào)用實際的Java庫。 至少可以說這令人興奮,因為它直接將Node.js的可伸縮性和異步特性與安全且廣泛的服務(wù)器端Java中間件結(jié)合在一起。

6.日期/時間更改(

http://download.java.net/jdk8/docs/api/java/time/package-summary.html

日期/時間API移至java.time包,并遵循Joda時間格式。 另一個好處是,大多數(shù)類都是線程安全的并且是不可變的。

7.類型注釋

現(xiàn)在,注釋可用于裝飾通用類型本身。

例如:

List<@Nullable String>

這并非總是希望的,但在某些情況下可以證明是有用的。 除了裝飾泛型類型外,它還可以用于構(gòu)造函數(shù)和強(qiáng)制轉(zhuǎn)換。

new @NonEmpty @Readonly List(myNonEmptyStringSet) new @Interned MyObject()myString = (@NonNull String) myObject;

甚至可以注釋數(shù)組對象:

@NotNull String[] arr;

包含RuntimeVisibleTypeAnnotations和RuntimeInvisibleTypeAnnotations屬性,這些屬性使.class文件保存注釋信息。

8.Other –(很高興)更改

在TypeName,GenericString等的支持下,反射api有所增加。

String.join()方法是一個受歡迎的補(bǔ)充,因為創(chuàng)建了許多自行創(chuàng)建的實用程序類。 所以,下面的例子

String abc= String.join(" ", "Java", "8");

將被評估為“ Java 8”。

在“集合”包中,對Comparator接口進(jìn)行了改進(jìn),并添加了諸如反轉(zhuǎn),比較和隨后的COmparing之類的方法,可輕松自定義多個字段的比較。 諸如Concurrency和NIO之類的其他庫也已更新,但值得關(guān)注,并且與api中的更改保持一致。

總體而言,Java8經(jīng)過深思熟慮,并且正在使主流Java簡潔明了,并選擇了Scala / Clojure的某些出色部分來改進(jìn)其語法并解決人們所尋求的功能。

翻譯自: https://www.javacodegeeks.com/2014/03/8-new-features-for-java-8.html

總結(jié)

以上是生活随笔為你收集整理的Java 8的8个新功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。