当前位置:Java -> Java 21 记录和模式匹配:掌握面向数据的编程[视频]
在不断发展的软件开发世界中,数据发挥着核心作用。有效处理和处理数据对开发人员来说是至关重要的。作为最广泛使用的编程语言之一,Java 在 Java 21 中的最新改进中承认了面向数据的编程的重要性。两个重要的 Java Enhancement Proposals(JEPs)引人注目:JEP 440 和 JEP 441。
JEP 440 主要关注记录模式,这一特性显著增强了 Java 编程语言在数据操作方面的能力。记录模式引入了一种新的解构记录值的方式,使得数据导航和处理更加声明性和可组合。
考虑一个具有用户实体和两个记录的场景:UserCreatedEvent
和 UserDeletedEvent
。这些记录代表与用户活动相关的事件。
@Test
public void shouldGetEventDeleted(){
User otaviojava = new User("otaviojava");
Supplier<User> userSupplier = new UserDeletedEvent(otaviojava, Instant.now(), "nope reason");
var log = log(userSupplier);
Assertions.assertEquals(otaviojava, log.get());
}
在这个示例中,UserDeletedEvent
记录是使用特定属性创建的,包括受影响的用户、时间戳和事件原因。使用记录模式,您可以高效地解构UserDeletedEvent
并访问其属性,而无需冗长的 if-else 检查。
让我们深入研究一下log
方法,它展示了记录模式对数据导航的强大处理能力:
private Optional<User> log(Supplier<User> supplier){
if(supplier instanceof UserCreatedEvent(User user, Instant instant) ){
System.out.println("User created at " + instant + " with username " + user.username());
return Optional of(user);
} else if (supplier instanceof UserDeletedEvent(User user, Instant instant, String reason)) {
System.out.println("User deleted at " + instant + " with username " + user.username() + " because " + reason);
return Optional of(user);
}
return Optional.empty();
}
在这段代码中,UserCreatedEvent(User user, Instant instant)
和 UserDeletedEvent(User user, Instant instant, String reason)
是能直接访问相应事件的用户、时间和原因属性的记录模式。这种方法更为简洁,确保您以类型安全的方式处理数据。
JEP 440 关注增强记录模式,而 JEP 441 通过将模式匹配引入开关表达式和语句,扩展了其模式匹配能力。在这种背景下,模式匹配使得能够简洁和安全地处理复杂的面向数据的查询。
fireEvent
方法展示了如何有效使用开关表达式进行模式匹配:
String fireEvent(Supplier<User> supplier) {
return switch (supplier){
case UserCreatedEvent(var user, var instant) -> "User created at " + instant + " with username " + user.username();
case UserDeletedEvent(var user, var instant, var reason) -> "User delete at " + instant +
" with username " + user.username() + " because " + reason;
default -> "No event";
};
}
这段代码展示了在switch
表达式中的模式匹配。表达式中的每个 case 指定了一个模式和相应的操作。这些模式解构了supplier
对象,使得您能够直接访问用户事件记录的属性。这种方法增强了代码的可读性和可维护性,使得更容易处理复杂的数据结构。
要更深入地了解本文中讨论的概念和代码示例,请访问以下链接的 GitHub 代码库:Java 21 代码样本。
有了 Java 21 和 JEPs 440 和 441 的引入,Java 中的面向数据的编程已经达到了新的水平。这些特性赋予开发人员更有效地处理数据的能力,增强了代码的清晰度、安全性和可维护性。
在一个以数据为核心的软件开发世界里,掌握 Java 21 中的这些面向数据的编程特性对保持行业前沿至关重要。无论您是构建涉及大量数据处理的应用程序,还是简单地追求更清晰和可读性更强的代码,JEP 440 和 JEP 441 都是每个 Java 开发人员都应该加入其工具包的工具。
拥抱记录模式和模式匹配,在 Java 21 中释放您的 Java 应用程序的全部潜力。这是迈向更加优雅和高效的面向数据的编程的一步,使得您的代码库更为强大且更易于管理。Java 21 为 Java 开发铺平了朝着更加明亮和更加数据中心的未来的道路。
推荐阅读: 25. 面向对象五大基本原则是什么
本文链接: Java 21 记录和模式匹配:掌握面向数据的编程[视频]