在上面的代码中在过去,我们要先对s进行null的判断,再进行switch,否则有可能就会出现上面的错误。修改如下: 复制 if(s==null){return;} switch(s){// TODO} 1. 2. 3. 4. 5. 6. 以上代码是Java 21之前,从Java 21起,我们可以如下: 复制 switch(s){casenull->System.out.println("oops");case"a",...
Java21以前, 如果选择器表达式的计算结果为null,则switch语句和表达式会抛出空指针异常,但是现在可以直接对null进行判断,类似如下: staticvoidtestFooBar(Strings){switch(s){casenull->System.out.println("Oops");case"Foo","Bar"->System.out.println("Great");default->System.out.println("Ok");}} 3.总结...
Java 21允许switch现在块和表达式在使用null,所以无需预先检查 null在。可能会注意到在这里没有使用默认情况。Java通常会引发错误,指出尚未涵盖所有情况。但Color是一个sealed类,Java可以知道每种情况都已被处理。Guard 子句允许在switch语句和表达式中优雅地表达复杂的条件,而嵌套if条件。考虑一种情况,需要特殊情况R...
在这个例子中,Switch 表达式利用模式匹配来检查Point记录的不同情况,包括它的坐标是否相等、只关注 x 坐标、处理 null 值,以及捕获所有其他情况。 四、总结 Java 21 的 Switch 模式匹配特性是对 Java 语言模式匹配支持的扩展,它使得 Switch 语句更加灵活和强大。通过允许在 Switch 语句中使用模式匹配来处理不同类型...
switch 语句在处理 null 时会抛出 NullPointerException,如果选择器变量是 null,程序会在运行时崩溃。通过在执行 switch 语句之前对选择器变量进行 null 检查,我们可以有效避免这个异常。 更进一步:使用 Optional 避免null 检查 为了更优雅地避免处理 null,Java 提供了 Optional 类,它是一种容器类型,专门用于表示可能...
Java 21允许switch现在块和表达式在使用null,所以无需预先检查 null在。 可能会注意到在这里没有使用默认情况。Java通常会引发错误,指出尚未涵盖所有情况。但Color是一个sealed类,Java可以知道每种情况都已被处理。 Guard 子句允许在switch语句和表达式中优雅地表达复杂的条件,而嵌套if条件。
在Java中,switch语句支持的类型包括byte、short、int、char、enum等,而对于对象类型(如String),switch语句会使用equals方法来比较两个字符串的值。然而,如果试图将null作为switch语句的条件,这将导致NullPointerException异常。 下面是处理null的例子 publicclassNullSwitchExample{publicstaticvoidmain(String[]args){String...
JEP 441: Pattern Matching for switch JEP Goals: Expands the expressiveness and applicability of switch expressions and statements by allowing patterns to appear in case labels. Allows the historical null-hostility of switch to be relaxed when desired. Increases the safety of switch statements by re...
Java 21正式发布,15大特性一览 Java 开发工具包(JDK) 21 是 Oracle 标准 Java 实现的最新长期支持 (LTS) 版本,现已推出生产版本。比较实用的我看就5个,字符串模板、有序集合、记录模式、switch的模式匹配、虚拟线程,其他一般也用不大到。 Java 开发工具包(JDK) 21 是 Oracle 标准 Java 实现的最新长期支持 (...