Java 21中使用模式匹配的switch表达式处理枚举时出现错误分支匹配的问题咨询
Java 21中使用模式匹配的switch表达式处理枚举时出现错误分支匹配的问题咨询
各位好,我最近在Java 21环境下写枚举相关代码时碰到个奇怪的问题,想请教下大家。
先看这段没问题的传统switch代码:
public class EnumSandboxTest { public static void main(String[] args) { TestEnum test = TestEnum.D; String par = "9999"; switch (test) { case D: System.out.println(par.length() < 5 ? "D2" : "D"); break; case E: System.out.println(par.length() < 4 ? "E2" : "E"); break; default: System.out.println("EMPTY (DEFAULT)"); }; } private enum TestEnum { D,E; } }
这段代码运行后会按预期打印出D2,完全符合我的预期。
可是当我把switch改成用表达式和模式匹配的写法后,就出现了分支匹配错误的情况。修改后的代码片段是这样的:
switch (test) { case D -> System.out.println("D"); case E -> System.out.println("E"); case TestEnum p -> // 后续的处理逻辑 }
我明明把test赋值成了TestEnum.D,结果代码没有走到case D的分支,反而匹配到了case TestEnum p这个分支,这实在让我摸不着头脑。有没有朋友能帮我分析下这是为什么呀?
备注:内容来源于stack exchange,提问作者simonalexander2005
相关产品推荐
相关产品推荐

