您可以提取一个方法,该方法根据需要调用 contains
方法的列表(或集合)。这可以通过 switch/case 语句、数组或 Map<Integer, List<String>>
来实现。回退是返回一个空集合(永远不会包含任何内容,因此返回 false)。
static List<String> listByCode(final int code) {
switch (code) {
case 1: return ClassName.static_list1;
case 2: return ClassName.static_list2;
case 3: return ClassName.static_list3;
case 4: return ClassName.static_list4;
default: return Collections.emptyList();
}
}
// 调用点(您的现有代码):
return listByCode(code).contains(string_object);
使用数组的替代解决方案:
private static List<String>[] lists = {
ClassName.static_list1,
ClassName.static_list2,
ClassName.static_list3,
ClassName.static_list4
};
static List<String> listByCode(final int code) {
return code > 0 && code < lists.length
? lists[code - 1]
: Collections.emptyList();
// 或者:不检查,直接抛出 ArrayIndexOutOfBoundsException
}
使用 Map 的解决方案:
private static Map<Integer, List<String>> listsByCode = Map.of(
1, ClassName.static_list1,
2, ClassName.static_list2,
3, ClassName.static_list3,
4, ClassName.static_list4
);
static List<String> listByCode(final int code) {
return listsByCode.getOrDefault(code, Collections.emptyList());
}
请注意,基于数组和 Map 的解决方案不允许您替换类中的列表引用,而基于 switch 的解决方案则可以。但是,也许您不需要有单独的引用,数组/Map 可以成为访问这些列表的标准方式。