Skip to main content

Java 8 新特性 (EOL)

warning

生命周期结束时间(EOL): 2022/12/11

官方发布介绍页面:https://openjdk.org/projects/jdk8/

1. Lambda 表达式​

Lambda 表达式提供了一种简洁的方式来表示匿名函数。

List<String> list = Arrays.asList("a", "b", "c");
list.forEach(item -> System.out.println(item));

2. 方法引用​

方法引用提供了一种简洁的方式来引用现有的方法。

List<String> list = Arrays.asList("a", "b", "c");
list.forEach(System.out::println);

3. 接口的默认方法​

接口可以有默认方法实现。

interface MyInterface {
default void defaultMethod() {
System.out.println("Default Method");
}
}

class MyClass implements MyInterface {}

MyClass obj = new MyClass();
obj.defaultMethod();

4. 新的日期和时间 API​

引入了新的日期和时间 API。

LocalDate date = LocalDate.now();
System.out.println(date);

5. Stream API​

Stream API 用于处理集合的操作。

List<String> list = Arrays.asList("a", "b", "c");
list.stream().filter(s -> s.startsWith("a")).forEach(System.out::println);

6. Optional 类​

Optional 类用于避免空指针异常。

Optional<String> optional = Optional.of("Hello");
optional.ifPresent(System.out::println);

7. Nashorn JavaScript 引擎​

JDK 8 包含了一个新的 JavaScript 引擎 Nashorn。

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval("print('Hello, World!')");

8. Base64​

JDK 8 提供了 Base64 编码和解码的类。

String encoded = Base64.getEncoder().encodeToString("Hello".getBytes());
System.out.println(encoded);

9. 并行数组​

并行数组操作可以提高性能。

int[] array = {1, 2, 3, 4, 5};
Arrays.parallelSort(array);
System.out.println(Arrays.toString(array));

10. 类型注解​

类型注解可以用于更细粒度的注解。

public class TypeAnnotationExample<@TypeAnnotation T> {
// 示例代码
}

11. 重复注解​

允许在同一声明或类型使用相同的注解多次。

@Repeatable(MyAnnotations.class)
@interface MyAnnotation {
String value();
}

@MyAnnotation("First")
@MyAnnotation("Second")
class MyClass {}

12. CompletableFuture​

用于异步编程的类。

CompletableFuture.supplyAsync(() -> "Hello").thenAccept(System.out::println);

13. Collectors​

用于收集 Stream 结果的工具类。

List<String> list = Arrays.asList("a", "b", "c");
String result = list.stream().collect(Collectors.joining(", "));
System.out.println(result);

14. Optional 类的改进​

Optional 类增加了更多的方法。

Optional<String> optional = Optional.of("Hello");
optional.orElseThrow(() -> new IllegalArgumentException("Value is absent"));

15. 新的并发 API​

引入了新的并发工具类。

ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println(map);

16. StampedLock​

一种新的锁机制。

StampedLock lock = new StampedLock();
long stamp = lock.writeLock();
try {
// 进行写操作
} finally {
lock.unlockWrite(stamp);
}

17. CompletableFuture 的改进​

CompletableFuture 增加了更多的方法。

CompletableFuture.supplyAsync(() -> "Hello")
.thenApply(String::toUpperCase)
.thenAccept(System.out::println);

18. Optional 的改进​

Optional 增加了更多的方法。

Optional<String> optional = Optional.of("Hello");
optional.ifPresentOrElse(System.out::println, () -> System.out.println("Value is absent"));

19. Stream API 的改进​

Stream API 增加了更多的方法。

List<String> list = Arrays.asList("a", "b", "c");
list.stream().takeWhile(s -> !s.equals("b")).forEach(System.out::println);

20. Collectors 的改进​

Collectors 增加了更多的方法。

List<String> list = Arrays.asList("a", "b", "c");
Map<Boolean, List<String>> partitioned = list.stream().collect(Collectors.partitioningBy(s -> s.equals("a")));
System.out.println(partitioned);