Devoxx 大会结束在几天前结束了,一位与会者对此次大会的重要内容进行了总结,他提到Java 7的主要变化如下:
1.对collections的支持
- 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”);
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");
现在你还可以:
- List<String> list = ["item"];
- String item = list[0];
- Set<String> set = {“item”};
- Map<String, Integer> map = {“key” : 1};
- int value = map["key"];
List<String> list = ["item"];
String item = list[0];
Set<String> set = {"item"};
Map<String, Integer> map = {"key" : 1};
int value = map["key"];
2.自动资源管理
- BufferedReader br = new BufferedReader(new FileReader(path));
- try {
- return br.readLine();
- } finally {
- br.close();
- }
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
becomes:
- try (BufferedReader br = new BufferedReader(new FileReader(path)) {
- return br.readLine();
- }
- You can declare more than one resource to close:
- try (
- InputStream in = new FileInputStream(src);
- OutputStream out = new FileOutputStream(dest))
- {
- // code
- }
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
return br.readLine();
}
You can declare more than one resource to close:
try (
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest))
{
// code
}
3.对通用实例创建(diamond)的type引用进行了改进
- Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
becomes:
- Map<String, List<String>> anagrams = new HashMap<>();
Map<String, List<String>> anagrams = new HashMap<>();
4.数值可加下划线
- int one_million = 1_000_000;
int one_million = 1_000_000;
5.在switch中可使用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;
- }
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.二进制文字
- int binary = 0b1001_1001;
int binary = 0b1001_1001;
7.简化了可变参数方法的调用
当程序员试图使用一个不可具体化的可变参数并调用一个*varargs* (可变)方法时,编辑器会生成一个“非安全操作”的警告。详情查看