jdk11

The Redefine Team Lv5

今天(2018-09-26), 期待的重量级更新jdk11正式版发布

可以通过jdk11 下载

Feature

Local Variable Type Inference

在以前对变量进行声明时

1
String text = "你好 Jdk 11"

目前可以通过var 关键字进行声明

1
var text = "你好 Jdk 11"

如果声明的是一个常量

1
final var text = "你好 Jdk 11"

而不是scala 那样

1
val text = "你好 Jdk 11"

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

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

  • 标题: jdk11
  • 作者: The Redefine Team
  • 创建于 : 2018-09-26 14:10:56
  • 更新于 : 2023-05-23 18:52:03
  • 链接: https://redefine.ohevan.com/2018/09/26/jdk11/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论