Java 8的8个新功能
注意:確保還檢查了我們的詳細教程Java 8 Features – ULTIMATE Guide 。
Jdk 1.8(又名Java 8)今天發布,這意味著它的通用發布版本已經公開發售,開發人員可以從早期發布版本切換到經過測試的版本以供生產使用。 但是,對于繁忙的Java開發人員來說,這對您意味著什么? 好吧,我總結了一些要標記此版本的要點:
1.Lamda表達式
我從lambda表達式開始,因為它可能是Java 5中的Generics / Annotations之后的語言中最受歡迎的功能。
語法如下:
(argtype arg...) -> { return some expression.. probably using these arguments }它的作用是減少明顯的代碼,例如在匿名內部類中。 (搖擺動作處理程序變得很性感,是的!)
因此,線程可以更改為:
Runnable oldRunner = new Runnable(){public void run(){System.out.println("I am running");} }; Runnable java8Runner = () ->{System.out.println("I am running"); };與Scala相似,在Lambda中也可以進行類型推斷。 考慮以下可用示例:
Comparator c = (a, b) -> Integer.compare(a.length(), b.length());在此,當實現compare方法時,可以推斷出a,b的類型(在這種情況下為Comparator接口的String)。
用于將塊與參數分開的符號->與Scala中已經使用的=>非常相似,如果您擅長使用該符號,則沒有太多理由進行切換,因為您會感覺到lambda在Java中的實現方式不充分(和冗長),但是對于一個優秀的'ol Java程序員來說,這是要走的路。
2.通用類型的更改和改進
從Lambdas獲得線索后,通用集合還可以推斷要使用的數據類型。 例如,使用通用集合的方法無需指定通用類型。 因此,以下方法
SomeClass.method();可以簡單地忽略類型信息而調用:
SomeClass.method();可以通過方法簽名來推斷類型,這對于嵌套調用(如
myCollection.sort().removeUseless().beautify();3.流集合類型(
流是一個迭代器,它允許對其調用的集合進行單次運行。 與Lambdas一起,這是另一個值得關注的功能。 您可以使用流對集合執行諸如Filer或map / reduce的功能性操作,這些集合可以使用Stream對象作為單個元素進行流式處理。 流可以根據需要順序或并行運行。 并行模式利用fork / join框架,可以利用多個內核的功能。
例:
List guys = list.getStream.collect(Collectors.toList())也可以并行實現為
List guys = list.getStream.parallel().collect(Collectors.toList()將集合減少為單個項目的另一個不錯的示例是調用reduce algorithem。
int sum = numberList.stream().reduce(0, (x, y) -> x+y);要么,
int sum = numberList.stream().reduce(0, Integer::sum);4.功能接口(
這些接口包含一些不需要實現的默認方法,可以直接從該接口運行。 這對現有代碼有幫助-更改接口不必使實現它的所有類都實現新方法。 這類似于Scala中的Traits,功能接口將與lambda兼容。
5. Nashorn –
這是使我們能夠在JVM上運行javascript的javascript引擎。 它類似于運行Node.js的chrome提供的V8引擎。 它與Node.js應用程序兼容,同時還允許服務器上運行的javascript代碼調用實際的Java庫。 至少可以說這令人興奮,因為它直接將Node.js的可伸縮性和異步特性與安全且廣泛的服務器端Java中間件結合在一起。
6.日期/時間更改(
http://download.java.net/jdk8/docs/api/java/time/package-summary.html
日期/時間API移至java.time包,并遵循Joda時間格式。 另一個好處是,大多數類都是線程安全的并且是不可變的。
7.類型注釋
現在,注釋可用于裝飾通用類型本身。
例如:
List<@Nullable String>這并非總是希望的,但在某些情況下可以證明是有用的。 除了裝飾泛型類型外,它還可以用于構造函數和強制轉換。
new @NonEmpty @Readonly List(myNonEmptyStringSet) new @Interned MyObject()myString = (@NonNull String) myObject;甚至可以注釋數組對象:
@NotNull String[] arr;包含RuntimeVisibleTypeAnnotations和RuntimeInvisibleTypeAnnotations屬性,這些屬性使.class文件保存注釋信息。
8.Other –(很高興)更改
在TypeName,GenericString等的支持下,反射api有所增加。
String.join()方法是一個受歡迎的補充,因為創建了許多自行創建的實用程序類。 所以,下面的例子
String abc= String.join(" ", "Java", "8");將被評估為“ Java 8”。
在“集合”包中,對Comparator接口進行了改進,并添加了諸如反轉,比較和隨后的COmparing之類的方法,可輕松自定義多個字段的比較。 諸如Concurrency和NIO之類的其他庫也已更新,但值得關注,并且與api中的更改保持一致。
總體而言,Java8經過深思熟慮,并且正在使主流Java簡潔明了,并選擇了Scala / Clojure的某些出色部分來改進其語法并解決人們所尋求的功能。
翻譯自: https://www.javacodegeeks.com/2014/03/8-new-features-for-java-8.html
總結
以上是生活随笔為你收集整理的Java 8的8个新功能的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 庐山离哪个机场近
- 下一篇: Jibx Jersey2集成
