文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

了解 Java 21 的最新增强功能

2024-11-30 11:57

关注

Java 21 带来了一系列令人振奋的增强功能,革新了并发性、集合操作以及记录处理方式。

引入虚拟线程

扩展服务器应用程序一直是一个挑战,线程往往成为瓶颈。有限的线程数量,加上频繁等待事件或锁的解除阻塞,制约了整体性能。

过去,解决这个问题需要使用 CompletableFuture 或响应式框架等构建,导致代码变得复杂,难以理解和维护。

幸运的是,Java 19 引入了虚拟线程作为预览功能,而 Java 21 通过 JDK Enhancement Proposal 444 进一步完善和巩固了这一功能。

虚拟线程提供了一种非常有希望的解决方案,让您更有效地应对可扩展性挑战,从而提高服务器应用程序的性能和响应能力。

序列化集合更易用

传统上,在 Java 编程中使用链表需要编写冗长的代码。例如,要获取最后一个元素,必须使用下面这种繁琐的方法:

var last = list.get(list.size() - 1);

然而,Java 21 引入了一种简洁而优雅的替代方法:

var last = list.getLast();

类似地,要访问 LinkedHashSet 的第一个元素,以前需要绕个弯子:

var first = linkedHashSet.iterator().next();

但是在 Java 21 中,这个任务变得简单得多:

var first = linkedHashSet.getFirst();

你还可以使用新的 getLast 方法访问 LinkedHashSet 的最后一个元素,而无需遍历整个集合。

这些对序列化集合的改进不仅提高了代码的可读性,还简化了元素的检索过程,使 Java 编程更高效、更友好。

记录模式(Record Patterns)

记录模式在 Java 19 中作为预览功能引入,为在 Java 中访问记录(Record)的字段提供了一种便捷的机制,无需显式的强制类型转换或访问方法。

它们与 instanceof 模式匹配(Pattern Matching for instanceof)和 switch 模式匹配(Pattern Matching for switch)相辅相成,极大地简化了代码,提升了整体可读性。

下面是一个示例,以一个名为 Position 的简单记录为例:

public record Position(int x, int y) {}

以前,基于对象的类执行不同操作需要使用 instanceof 模式匹配,如以下代码片段所示:

public void print(Object o) {
    if (o instanceof Position p) {
        System.out.printf("o is a position: %d/%d%n", p.x(), p.y());
    } else if (o instanceof String s) {
        System.out.printf("o is a string: %s%n", s);
    } else {
        System.out.printf("o is something else: %s%n", o);
    }
}

使用记录模式,现在可以直接匹配记录模式,如 Position (int x, int y),而无需使用 Position p 模式。这使您可以在代码中直接访问变量 x 和 y,无需使用 p.x() 和 p.y():

public void print(Object o) {
    if (o instanceof Position(int x, int y)) {
        System.out.printf("o is a position: %d/%d%n", x, y);
    } else if (o instanceof String s) {
        System.out.printf("o is a string: %s%n", s);
    } else {
        System.out.printf("o is something else: %s%n", o);
    }
}

此外,您可以与 switch 模式匹配结合使用记录模式,进一步简化代码:

public void print(Object o) {
    switch (o) {
        case Position(int x, int y) - > System.out.printf("o is a position: %d/%d%n", x, y);
        case String s - > System.out.printf("o is a string: %s%n", s);
        default - > System.out.printf("o is something else: %s%n", o);
    }
}

嵌套记录模式允许匹配字段本身就是记录的记录。例如,考虑一个名为 Path 的记录,包含了一个 from 和 to 位置:

public record Path(Position from, Position to) {}

通过使用记录模式,打印 Path 对象变得更简洁:

public void print(Object o) {
    switch (o) {
        case Path(Position from, Position to) - > System.out.printf("o is a path: %d/%d -> %d/%d%n", from.x(), from.y(), to.x(), to.y());
       // other cases
    }
}

借助记录模式,处理包含不同类型字段的记录变得更加清晰和可读。假设您有修改过的记录 Position2D 和 Position3D,其中 Position 是一个 Java 接口,两者都实现了它:

public sealed interface Position permits Position2D, Position3D {}
public record Position2D(int x, int y) implements Position {}
public record Position3D(int x, int y, int z) implements Position {}
public record Path < P extends Position > (P from, P to) {}

为了区分打印 2D 和 3D 路径的行为,您可以使用记录模式:

public void print(Object o) {
    switch (o) {
        case Path(Position2D from, Position2D to) - > System.out.printf("o is a 2D path: %d/%d -> %d/%d%n", from.x(), from.y(), to.x(), to.y());
        case Path(Position3D from, Position3D to) - > System.out.printf("o is a 3D path: %d/%d/%d -> %d/%d/%d%n", from.x(), from.y(), from.z(), to.x(), to.y(), to.z());
       // other cases 
    }
}

记录模式大大减少了冗长的代码,提高了处理包含不同类型字段的记录时的可读性。

Java 21 开启新的可能性

Java 21 引入了许多强大的功能,增强了 Java 编程语言的能力。通过采用这些增强功能,您可以简化开发过程,为应用程序开启新的可能性。

及时了解最新的语言特性和 Java 框架,可以使您的代码更高效和可维护,确保您始终处于 Java 编程的前沿。

来源:Linux迷内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯