Java 11中如何简化/优化多分支if-else判断代码?
Java 11代码优化方案:替换多分支if-else
你的这段多分支if-else代码可以优化,主要解决冗余、扩展性差的问题,以下是两种适合Java 11的方案:
方案一:使用Map映射(推荐用于可扩展场景)
通过将code与对应的静态列表预先关联到Map中,避免分支判断,后续新增code只需修改Map的初始化即可。
首先初始化一个静态Map(可以放在当前类或ClassName中):
private static final Map<Integer, List<String>> CODE_LIST_MAPPING = Map.of( 1, ClassName.static_list1, 2, ClassName.static_list2, 3, ClassName.static_list3, 4, ClassName.static_list4 );
然后方法代码简化为:
return CODE_LIST_MAPPING.getOrDefault(code, Collections.emptyList()).contains(string_object);
Map.of()是Java 9+支持的方法,Java 11可直接使用,用于创建不可变MapgetOrDefault()会在找不到对应code时返回空列表,此时contains()必然返回false,与原逻辑一致
方案二:简化switch语句(适合固定分支场景)
如果code的取值范围固定,用switch语句替代if-else,结构更清晰:
switch (code) { case 1: return ClassName.static_list1.contains(string_object); case 2: return ClassName.static_list2.contains(string_object); case 3: return ClassName.static_list3.contains(string_object); case 4: return ClassName.static_list4.contains(string_object); default: return false; }
两种方案对比:
- 若后续可能新增code分支,优先选Map方案,符合开闭原则,无需修改业务逻辑代码
- 若分支固定不变,switch方案足够简洁,可读性也优于原if-else
内容的提问来源于stack exchange,提问作者Mazain Mehkry
相关产品推荐
相关产品推荐

