Java 7已經(jīng)完成的7大新功能: 1 對集合類的語言支持; 2 自動資源管理; 3 改進的通用實例創(chuàng)建類型推斷; 4 數(shù)字字面量下劃線支持; 5 switch中使用string; 6 二進制字面量; 7 簡化可變參數(shù)方法調用。 下面我們來仔細看一下這7大新功能: 1 對集合類的語言支持 Java將包含對創(chuàng)建集合類的第一類語言支持。這意味著集合類的創(chuàng)建可以像Ruby和Perl那樣了。 原本需要這樣: List<String> list = new ArrayList<String>(); list.add("item"); String item = list.get(0); Set<String> set = new HashSet<String>(); set.add("item"); Map<String, Integer> map = new HashMap<String, Integer>(); map.put("key", 1); int value = map.get("key"); 現(xiàn)在你可以這樣: List<String> list = ["item"]; String item = list[0]; Set<String> set = {"item"}; Map<String, Integer> map = {"key" : 1}; int value = map["key"]; 這些集合是不可變的。 2 自動資源管理 Java中某些資源是需要手動關閉的,如InputStream,Writes,Sockets,Sql classes等。這個新的語言特性允許try語句本身申請更多的資源, 這些資源作用于try代碼塊,并自動關閉。 這個: BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } 變成了這個: try (BufferedReader br = new BufferedReader(new FileReader(path)) { return br.readLine(); } 你可以定義關閉多個資源: try ( InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest)) { // code } 為了支持這個行為,所有可關閉的類將被修改為可以實現(xiàn)一個Closable(可關閉的)接口。 3 增強的對通用實例創(chuàng)建(diamond)的類型推斷 類型推斷是一個特殊的煩惱,下面的代碼: Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); 通過類型推斷后變成: Map<String, List<String>> anagrams = new HashMap<>(); 這個<>被叫做diamond(鉆石)運算符,這個運算符從引用的聲明中推斷類型。 4 數(shù)字字面量下劃線支持 很長的數(shù)字可讀性不好,在Java 7中可以使用下劃線分隔長int以及l(fā)ong了,如: int one_million = 1_000_000; 運算時先去除下劃線,如:1_1 * 10 = 110,120 – 1_0 = 110 5 switch中使用string 以前你在switch中只能使用number或enum?,F(xiàn)在你可以使用string了: String s = ... switch(s) { case "quux": processQuux(s); // fall-through case "foo": case "bar": processFooOrBar(s); break; case "baz": processBaz(s); // fall-through default: processDefault(s); break; } 6 二進制字面量 由于繼承C語言,Java代碼在傳統(tǒng)上迫使程序員只能使用十進制,八進制或十六進制來表示數(shù)(numbers)。 由于很少的域是以bit導向的,這種限制可能導致錯誤。你現(xiàn)在可以使用0b前綴創(chuàng)建二進制字面量: int binary = 0b1001_1001; 現(xiàn)在,你可以使用二進制字面量這種表示方式,并且使用非常簡短的代碼,可將二進制字符轉換為數(shù)據(jù)類型,如在byte或short。 byte aByte = (byte)0b001; short aShort = (short)0b010; 7 簡化的可變參數(shù)調用 當程序員試圖使用一個不可具體化的可變參數(shù)并調用一個*varargs* (可變)方法時,編輯器會生成一個“非安全操作”的警告。 JDK 7將警告從call轉移到了方法聲明(methord declaration)的過程中。這樣API設計者就可以使用vararg,因為警告的數(shù)量大大減少了。
|