Java中如何在switch语句中实现执行所有前置case逻辑的选项
Java Switch 无重复代码实现多选项合并执行需求
完全可以实现,这里给出两种常用实现方案,都不需要重复编写case内的业务代码:
方案1:利用Switch穿透特性实现
仅依靠Switch原生的case穿透规则+条件break即可实现,无需额外重构代码:
switch (option) { case 4: case 1: System.out.println("1"); if (option != 4) break; case 2: System.out.println("2"); if (option != 4) break; case 3: System.out.println("3"); break; default: System.out.print("Invalid selection."); break; }
执行逻辑说明:
- 输入1/2/3时,匹配到对应case后执行专属逻辑,判断当前option不等于4就直接break,不会执行后续其他case的逻辑
- 输入4时,会穿透到case1开始执行,全程满足option==4的条件不会中途break,会依次执行1、2、3的全部逻辑
方案2:业务逻辑抽离为独立方法(更推荐)
如果各选项的业务逻辑复杂度较高,更推荐把逻辑封装为独立方法,可维护性更强:
// 各选项逻辑抽为独立方法 private void handleOption1() { System.out.println("1"); } private void handleOption2() { System.out.println("2"); } private void handleOption3() { System.out.println("3"); } // 业务调用处的Switch代码 switch (option) { case 1: handleOption1(); break; case 2: handleOption2(); break; case 3: handleOption3(); break; case 4: handleOption1(); handleOption2(); handleOption3(); break; default: System.out.print("Invalid selection."); break; }
这种方案后续修改任意选项的逻辑时,只需要调整对应方法即可,不会出现重复代码漏改的问题,也符合单一职责的编码规范。
内容的提问来源于stack exchange,提问作者M. Ruiz
相关产品推荐
相关产品推荐

