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

歡迎訪問 生活随笔!

生活随笔

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

java

[阅读笔记] Java 7 新特性

發布時間:2024/9/20 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [阅读笔记] Java 7 新特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Time: 1.5 hours
原文:A look at Java 7's new features, by Madhusudhan Konda
http://radar.oreilly.com/2011/09/java7-features.html

?

1. 引入了"Diamond Operator"(寫法:<>)

一句話描述:簡化創建參數化類的對象的語法。
示例
(before 7) Map<String, List<Trade>> trades = new TreeMap<String, List<Trade>> ();
(since 7) Map<String, List<Trade>> trades = new TreeMap <> ();
注意點
trades = new TreeMap () 也是合法的,但是編譯器會提示"type-safety warnings"
Comment
Java 7以前要避免這種繁瑣的語法,要借用static factory method來實現;《Effective Java 2nd》 Item 1中對此進行過說明, Joshua在書中提到"Someday the language may perform this sort of type inference on constructor invocations as well as method invocations.",果不其然,現在這個版本里就支持了這個特性。

2. Switch支持String類型

一句話描述:無。
示例:無:
注意點:判斷case是否相等時調用String.equals()方法進行比較。
Comment
1. 這樣switch支持的類型有:primitive types, enum, string
2. 使用string比enum更容易出錯,降低出錯風險的手段:(1) 將string定義為常量,在case里僅用常量來引用字符串 (2) 如果業務邏輯允許,default語句要毫不猶豫地拋出異常。

3. Automatic resource management

一句話描述try-finally的替代品,用于確保資源被釋放。
示例
(before 7)
try {
fos = new FileOutputStream("movies.txt"); dos = new DataOutputStream(fos); dos.writeUTF("Java 7 Block Buster"); } catch (IOException e) { e.printStackTrace(); } finally { try { fos.close(); dos.close(); } catch (IOException e) { // log the exception } } (since 7)try (FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) { dos.writeUTF("Java 7 Block Buster");
} catch (IOException e) { // log the exception

????????????? }

注意點
1. 放在這個結構里的資源必須要實現java.lang.AutoCloseable接口(這個接口僅有一個close方法)
2. 印象中C#里早就有類似的特性
3. 觀察示例中的代碼,(before 7)的版本里有兩個IOException 的catch 語句,對應兩個不同場景,因此在catch語句塊里有不同的處理邏輯;
但(since 7)僅有一個catch,如何區分不同的情形?需要檢查一下編譯后的字節碼確認一下

4.帶下劃線的數字
一句話描述:看很長的數字更方便。
示例:int million = 1_000_000
Comment: 對這個特性是否會被開發人員廣泛接受表示懷疑。

5. 對異常處理機制的改進
一句話描述:
可以合并多個catch塊。
示例
??????? try {
????????????????? methodThatThrowsThreeExceptions();
??????????? } catch (ExceptionOne | ExceptionTwo | ExceptionThree e) {
??????????????? ? // log and deal with all Exceptions
??????????? }
Comment
可以將處理邏輯一樣的Exception寫到一起,減少代碼冗余

6. New file system API (NIO 2.0)

一句話描述:使開發支持多文件系統的代碼更加輕松。
新的內容包括:1. java.nio.file,新的類包括Path, Paths, FileSystem, FileSystems等;2. File Change notifacation

7. Fork and Join

一句話描述:將任務分給多個core執行,然后匯總
說明:簡單認識相關的幾個類
ForkJoinPool:??? 用以執行ForkJoinTask,實現了Executor, ExecutorService。
ForkJoinTask:??? 待求解的問題/任務。
RecursiveAction:??? ForkJoinTask的子類,不返回值。
RecursiveTask:??? ForkJoinTask的子類,返回值。
Executor:??????? 被ForkJoinPool所實現。

8. Supporting dynamism (invokedynamic)

一句話描述:提供對動態語言的支持。
說明:根據類型檢查是在編譯還是運行時進行,可分為"static typed language"(如Java)和"dynamically typed language"(如Ruby, Python, Clojure)。Java 7中有一個新的包java.lang.invoke用來對動態語言進行支持。要了解這個特性需要找專門的資料。

轉載于:https://www.cnblogs.com/yuquanlaobo/archive/2011/11/14/2248477.html

總結

以上是生活随笔為你收集整理的[阅读笔记] Java 7 新特性的全部內容,希望文章能夠幫你解決所遇到的問題。

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