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);