Java 作为记录模式 Amber 这个项目的一部分是 Java 16 并在 Java 21 通过添加解构函数和模式匹配来增强。此功能允许 Java 在应用程序中以更简单、更灵活的方式处理数据。在本教程中,我们将介绍记录模式的概念、如何帮助模式匹配以及各种编码示例。
1。 快速回顾Java记录 在深入研究记录模式之前,让我们快速回顾一下 Java 记录。记录是在 Java 14 它是专门为保存不可变数据而设计的一种新型。它们通过提供更简洁的语法来定义带有数据的类别,从而消除了编写模型代码的需要。在下面的例子中,我们定义了一个名为“Person记录包括名称、姓氏和年龄三个字段。
record Person(StringfirstName, StringlastName, intage) {}
记录是不可变的,限制了某些特征:
- 所有的字段都是最终的
- 这种隐式类型是final
- 禁止声明实例字段
Records 构造函数和构造函数将自动生成每个字段 getter 该方法使其比传统类更适合数据载体。
立即学习“Java免费学习笔记(深入);
2.什么是记录模式? Java 21 引入的记录模式将模式的概念与记录相结合,允许从记录中轻松解构和提取值。记录模式由记录类型和可选模式变量组成。只有当测试成功时,这些变量才会从目标记录中提取。
空值与任何记录模式不匹配,因此在这种情况下,模式变量不会初始化。
3.记录分析函数 分析函数是构造函数的逆函数。它从对象中提取值,而不是添加值。在记录的上下文中,分析函数被称为“解构函数”。它允许将记录值分解为其组成部分。假设我们有一个名字叫做“Name记录包括以下字段:
record Customer(String firstName, String lastName, intage) {}
从“我们可以使用解构函数”开始Customer在记录的例子中提取这些字段的值,如下例所示:
客户客户 = 新客户("Jane", "Smith", 30);
if (客户实例(String firstName, String lastName, intage)) { System.out.println(“名字:” + firstName); // 简 System.out.println(姓氏:" + lastName); // 史密斯 System.out.println(年龄:" + 年龄); // 30 }
当我们需要将多个相关值存储和检索为单个对象时,记录结构非常有用。记录的解构功能使我们能够轻松提取并在代码中使用这些值。
4。在 Switch 句子中的记录模式 Java 16 instanceoff介绍 在Java中匹配语句的模式 21 进一步扩展包括在内 switch 句子。它允许更简洁和可读的代码处理各种模式。
假设我们有一个名字叫“Account“有三种子类型的记录:”SavingAccount”、“CreditCardAccount”和“HomeLoanAccount"。每种子类型都有不同的计算余额的方法。我们可以 switch 使用记录模式来处理这三种情况,如下所示:
界面帐号{} 记录 SavingAccount(双余额)实现 Account {} record CreditCardAccount(double CreditLimit, doubleused) 实现 Account {} 记录 HomeLoanAccount(double totalAmount, double amountPaid) 实现帐户 {}
账户 account= new CreditCardAccount(10000, 1000);
开关(形状){ case SavingAccount s: System.out.println(”账户余额为 " + 余额); 休息; 案例信用卡账户 c: System.out.println(“信用余额为:” + (creditLimit-used)); 休息; HomeloanAcounton h: System.out.println("余额 " +(totalAmount-amountPaid)); 休息; 默认: System.out.println(“未知账户”); }5。嵌套模式 除了从单个记录中提取值外,还可以嵌套记录模式来处理更复杂的记录。嵌套模式 除了从单个记录中提取值外,还可以嵌套记录模式来处理更复杂的记录。假设我们有一个名字叫“Account其中一种记录是“Customer“字段和另一种类型是”Address”的字段。我们可以使用嵌套记录模式从这两个字段中提取值,如下所示:
record Customer(String firstName, String lastName, intage) {}
记录帐户(客户客户,地址){}
客户客户 = 新客户("John", "Doe", 25); Address 地址 = new Address("123 Main St."城市", "州"); 账户 account = 新账户(客户, 地址);
if(账户实例(客户)(fName,lName,年龄),地址(街道,城市,州))){ System.out.println名字:“名字:” + fName); // 约翰 System.out.println(姓:"姓:" + lName); // 母鹿 System.out.println(年龄:" + 年龄); // 25 System.out.println地址:“” + 街道 + ", " + 城市 + ", " + 州); // 123 Main St.,城市,州 } 在这个例子中,我们使用两种嵌套模式从“Account”记录的“Customer”和“Address在字段中提取值。
6。组件匹配 由于模式变量不需要与记录的组件名称匹配,因此记录模式提供了更大的灵活性。只要它们兼容,模式匹配就会成功。例如:
record Customer(StringfirstName, StringlastName, intage) {}
记录帐户(客户客户,地址){}
客户客户 = 新客户("John", "Doe", 25);
if (客户实例 of Customer(var fn, var ln, var Age)) { System.out.println名字:“名字:” + fn); // 约翰 System.out.println(姓:"姓:" + ln); // 母鹿 System.out.println(年龄:" + 年龄); // 25 } // 访问嵌套记录组件 账户 account = new Account(customer, new Address("123 Main St", "New York", "NY")); if (account instanceof Account(var cust, var 地址)) { System.out.println(客户:“” + cust); // 客户[名字=约翰,姓氏=多伊,年龄=25] System.out.println地址:“” + 地址); // 地址[街=123 Main St, 城市=纽约, 州=纽约] }
在这里,模式变量“fn”和“ln”与“Customer“记录中对应的组件名称”fName”和“lName“不同的。这使得记录模式更加灵活,并避免与变量名发生任何潜在冲突。
7。结论 总之,Java 记录模式为解构记录和提取值提供了一种方便的方法。它们在处理 instanceof 和 switch 语句中的模式匹配使代码更加简洁、干净和可读。结合记录模式和记录分析函数,可以更稳定地处理复杂的记录。一般来说,该功能增强了记录作为数据载体的使用,使Java编程更加愉快。
通过使用,开发人员可以 MyExamCloud 的 1Z0-830 练习测试学习 SE 21 开发人员认证专业考试发现更多 Java 21 功能。
以上就是探索 Java 详细记录模式与模式匹配的内容,请关注图灵教育的其他相关文章!