当前位置:Java -> 如何开始使用 Java 21 中的新模式匹配
Java 21刚变得更简单了!
想写出更干净、更易读的代码吗?深入了解模式匹配,这是一个强大的新功能,让您可以轻松解构和分析数据结构。本文将通过许多示例探索模式匹配,展示它如何简化常规数据处理并保持代码的简洁。
模式匹配在两个关键领域表现出色。首先,switch语句的模式匹配功能取代了冗长的if
语句链,使您可以优雅地匹配选择器表达式与各种数据类型,包括原始数据类型、对象甚至null。其次,如果您需要检查对象的类型并提取特定数据呢?考虑到这一点,实例表达式的模式匹配功能简化了这一流程,使您可以确认对象是否与某个模式匹配,如果匹配,则方便地提取所需数据。
让我们看看Java代码中更多模式匹配的示例。
public static String getAnimalSound(Animal animal) {
return switch (animal) {
case Dog dog -> "woof";
case Cat cat -> "meow";
case Bird bird -> "chirp";
case null -> "No animal found!";
default -> "Unknown animal sound";
};
}
case Dog dog
)同时检查和转换类型case null
)->
)编写简洁的表达式if (object instanceof String str) {
System.out.println("The string is: " + str);
} else if (object instanceof Integer num) {
System.out.println("The number is: " + num);
} else {
System.out.println("Unknown object type");
}
str,num
)来捕获对象的值。String str = (String) object
)int number = 10;
switch (number) {
case 10:
System.out.println("The number is 10.");
break;
case 20:
System.out.println("The number is 20.");
break;
case 30:
System.out.println("The number is 30.");
break;
default:
System.out.println("The number is something else.");
}
使用原始类型进行模式匹配并没有引入全新功能,而是简化了在switch语句中处理原始类型时的现有实践。
String name = "Daniel Oh";
switch (name) {
case "Daniel Oh":
System.out.println("Hey, Daniel!");
break;
case "Jennie Oh":
System.out.println("Hola, Jennie!");
break;
default:
System.out.println("What’s up!");
}
Object obj = null;
switch (obj) {
case null:
System.out.println("The object is null.");
break;
default:
System.out.println("The object is not null.");
}
null
,则会抛出NullPointerException
。模式匹配允许单独处理null
情况的case null
子句,从而优雅地处理这种情况。case null
子句使代码的意图更清晰,而不是在switch之前需要外部进行null检查。case null
子句,即使存在默认情况,仍会像以前一样抛出NullPointerException
。List<String> names = new ArrayList<>();
names.add("Daniel Oh");
names.add("Jennie Oh");
for (String name : names) {
switch (name) {
case "Daniel Oh", "Jennie Oh":
System.out.println("Hola, " + name + "!");
break;
default:
System.out.println("What’s up!");
}
}
模式匹配是Java 21中一个强大的新功能,可以使您的代码更简洁、更易读。它在处理复杂数据结构时特别有用,具有以下关键优势:
总的来说,Java 21中的模式匹配简化了数据处理,提高了代码清晰度和可维护性,并增强了类型安全性,为更强大、更友好的编码体验奠定了基础。
推荐阅读: 阿里巴巴面经(43)
本文链接: 如何开始使用 Java 21 中的新模式匹配