今天(2018-09-26), 期待的重量级更新jdk11正式版发布
可以通过jdk11 下载
Feature
Local Variable Type Inference
在以前对变量进行声明时
1
| String text = "你好 Jdk 11"
|
目前可以通过var 关键字进行声明
如果声明的是一个常量
1
| final var text = "你好 Jdk 11"
|
而不是scala 那样
Collections
List, Set, Map 扩展了of, copyOf 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| var list = List.of("a", "b", "c") var copy = List.copyOf(list) System.out.println(list == copy) // true
var map = Map.of("A", "B", "B", "c", "C", "D");
var copyMap = Map.copyOf(map);
System.out.println(copyMap == map);
var set = Set.of("A", "B", "C");
var copySet = Set.copyOf(set);
System.out.println(copySet == set);
|
of 方法构建的是一个immutable 集合
如果使用的是通过直接new 的方式,那么集合不再是一个immutable 集合,而是一个mutable 集合
那么通过copyOf方法得到一个copy , 然后执行比较的话,结果为false
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| var mutableSet = new HashSet<String>();
var copyMutableSet = Set.copyOf(mutableSet);
System.out.println(copyMutableSet == mutableSet);
var mutableList = new ArrayList<Integer>();
mutableList.add(1); mutableList.add(2); mutableList.add(3);
var copyMutableList = List.copyOf(mutableList);
System.out.println(mutableList == copyMutableList);
var mutableMap = new HashMap<String, Integer>();
mutableMap.put("A", 1); mutableMap.put("B", 2); mutableMap.put("C", 3);
var copyMutableMap = Map.copyOf(mutableMap);
System.out.println(copyMutableMap == mutableMap);
|
Stream
ofNullable method
Stream 添加了ofNullable 方法
1
| Stream.ofNullable(null).count()
|
Stream.dropWhile method
1 2 3
| Stream.of(1,2,3,2,1) .dropWhile(n -> n < 3) .collect(Collector.toList());
|
Stream.takeWhile method
1 2 3
| Stream.of(1,2,3,2,1) .takeWhile(n -> n < 3) .collect(Collector.toList())
|
Optionals
1 2 3 4 5 6 7 8 9 10
| var foo = Optional.of("foo").orElseThrow(); var count = Optional.of("foo").stream().count();
System.out.println(foo); System.out.println(count);
var op = Optional.ofNullable(null).or(() -> Optional.of("fallback")).get();
System.out.println(op);
|
Strings
String 类有更多的快捷方法
1 2 3 4 5 6 7 8 9 10
| var foo = Optional.of("foo").orElseThrow(); var count = Optional.of("foo").stream().count();
System.out.println(foo); System.out.println(count);
var op = Optional.ofNullable(null).or(() -> Optional.of("fallback")).get();
System.out.println(op);
|
InputStream 添加了一个便捷的transferTo方法
1 2 3 4 5 6 7 8 9 10
| var classLoader = ClassLoader.getSystemClassLoader();
var inputStream = classLoader.getResourceAsStream("myfile.txt");
var tempFile = File.createTempFile("myFileCopy", "txt");
try(var outputStrema = new FileOutputStream(tempFile)){ inputStream.transferTo(outputStrema); }
|
当然最重要的还是关于ZGC的开启并可用
github