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))
- {
-
- }
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);
-
-
- case "foo":
- case "bar":
- processFooOrBar(s);
- break;
-
- case "baz":
- processBaz(s);
-
-
- 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* (可变)方法时,编辑器会生成一个“非安全操作”的警告