Java 7已經(jīng)完成的7大新功能:
1 對(duì)集合類的語言支持;
2 自動(dòng)資源管理;
3 改進(jìn)的通用實(shí)例創(chuàng)建類型推斷;
4 數(shù)字字面量下劃線支持;
5 switch中使用string;
6 二進(jìn)制字面量;
7 簡化可變參數(shù)方法調(diào)用。
下面我們來仔細(xì)看一下這7大新功能:
1 對(duì)集合類的語言支持
Java將包含對(duì)創(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 自動(dòng)資源管理
Java中某些資源是需要手動(dòng)關(guān)閉的,如InputStream,Writes,Sockets,Sql classes等。這個(gè)新的語言特性允許try語句本身申請(qǐng)更多的資源,
這些資源作用于try代碼塊,并自動(dòng)關(guān)閉。
這個(gè):
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
變成了這個(gè):
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
你可以定義關(guān)閉多個(gè)資源:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
為了支持這個(gè)行為,所有可關(guān)閉的類將被修改為可以實(shí)現(xiàn)一個(gè)Closable(可關(guān)閉的)接口。
3 增強(qiáng)的對(duì)通用實(shí)例創(chuàng)建(diamond)的類型推斷
類型推斷是一個(gè)特殊的煩惱,下面的代碼:
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
通過類型推斷后變成:
Map<String, List<String>> anagrams = new HashMap<>();
這個(gè)<>被叫做diamond(鉆石)運(yùn)算符,這個(gè)運(yùn)算符從引用的聲明中推斷類型。
4 數(shù)字字面量下劃線支持
很長的數(shù)字可讀性不好,在Java 7中可以使用下劃線分隔長int以及l(fā)ong了,如:
int one_million = 1_000_000;
運(yùn)算時(shí)先去除下劃線,如:1_1 * 10 = 110,120 – 1_0 = 110
5 switch中使用string
以前你在switch中只能使用number或enum。現(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 二進(jìn)制字面量
由于繼承C語言,Java代碼在傳統(tǒng)上迫使程序員只能使用十進(jìn)制,八進(jìn)制或十六進(jìn)制來表示數(shù)(numbers)。
由于很少的域是以bit導(dǎo)向的,這種限制可能導(dǎo)致錯(cuò)誤。你現(xiàn)在可以使用0b前綴創(chuàng)建二進(jìn)制字面量:
int binary = 0b1001_1001;
現(xiàn)在,你可以使用二進(jìn)制字面量這種表示方式,并且使用非常簡短的代碼,可將二進(jìn)制字符轉(zhuǎn)換為數(shù)據(jù)類型,如在byte或short。
byte aByte = (byte)0b001;
short aShort = (short)0b010;
7 簡化的可變參數(shù)調(diào)用
當(dāng)程序員試圖使用一個(gè)不可具體化的可變參數(shù)并調(diào)用一個(gè)*varargs* (可變)方法時(shí),編輯器會(huì)生成一個(gè)“非安全操作”的警告。
JDK 7將警告從call轉(zhuǎn)移到了方法聲明(methord declaration)的過程中。這樣API設(shè)計(jì)者就可以使用vararg,因?yàn)榫娴臄?shù)量大大減少了。
posted on 2011-03-18 15:21
junly 閱讀(16850)
評(píng)論(9) 編輯 收藏 所屬分類:
java