你还在用jdk8搬砖的时候,jdk23已经悄悄发布了当你还在用JDK8 搬砖的时候,JDK 23于2024年9月17日全
当你还在用JDK8
搬砖的时候,JDK 23
于2024年9月17日全面上市。
虽然它不是长期支持(LTS
)版本,但也并不妨碍我们一探究竟,看看它给我们带来了哪些惊喜!
一、 模式匹配中的原始类型(预览)
- JEP 455:在模式匹配中引入原始类型支持,这意味着你可以在
instanceof
和switch
语句中直接使用原始类型,而不需要进行装箱和拆箱操作。
if (obj instanceof int[] arr) {
for (int value : arr) {
System.out.println(value);
}
}
二、 类文件API(第二次预览)
- JEP 466:提供了一个API来读取和操作类文件,这对于需要动态生成或修改类文件的工具和库来说非常有用。
ClassFile classFile = ClassFile.read(inputStream);
Method method = classFile.methods().stream()
.filter(m -> m.name().equals("main"))
.findFirst()
.orElse(null);
三、 Markdown文档注释
- JEP 467:允许在JavaDoc中使用Markdown格式编写注释,使得文档更加易于阅读和编写。
/**
* This is a simple method to demonstrate Markdown support.
*
* ```java
* System.out.println("Hello, Markdown in JavaDocs!");
* ```
*/
public void demoMarkdown() {
System.out.println("Hello, Markdown in JavaDocs!");
}
四、 向量API(第八次孵化)
- JEP 469:继续孵化向量API,为在Java中进行SIMD(单指令流多数据流)编程提供更好的支持。
var vector = Vector.fromArray(int[] array);
var result = vector.map(x -> x * x);
五、流收集器(第二次预览)
- JEP 473:增强了Stream API,允许开发者定义自己的收集器,以支持复杂的数据转换和聚合操作。
List<String> names = people.stream()
.collect(Collectors.flatMapping(Person::getNames, Collector.toList()));
六、 结构化并发(第三次预览)
- JEP 480:通过引入结构化并发API,简化并发编程,将相关任务视为一个工作单元,提高错误处理和可观测性。
StructuredTask<Void> task = StructuredTask.run(() -> {
System.out.println("Running a structured concurrent task");
});
task.join();
七、 Scoped Values(第三次预览)
- JEP 481:允许在线程内和子线程间共享不可变数据,简化了并发编程中的共享数据管理。
ScopedValue<Boolean> active = ScopedValue.create(true);
try (var scope = active.openScope()) {
active.set(false);
// Perform actions
}
八、灵活的构造函数体(第二次预览)
- JEP 482:允许在调用父类构造函数之前初始化字段,为构造函数提供了更多的灵活性。
public class MyClass {
int value;
{
this.value = 42;
}
MyClass() {
super();
}
}
转载自:https://juejin.cn/post/7415911708865953832