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