此方法为表单中的每个文本字段调用不同的验证方法,并且 Map 中的 int[] 数组决定对文本字段执行哪些方法或哪种类型的验证。但是这种方法的圈复杂度为 10。请提出更好的替代方案或可以做些什么来改进此代码?
public final boolean validateFields(final HashMap<JTextField, int[]> textFieldMap) {
boolean flag = false;
for (Map.Entry<JTextField, int[]> entry : textFieldMap.entrySet()) {
JTextField field = entry.getKey();
for (int constant : entry.getValue()) {
switch (constant) {
case Constants.VAL_CHAR : flag = validateChar();
break;
case Constants.VAL_DATE : flag = validateDate();
break;
case Constants.VAL_DUPLICATE : flag = validateDuplicate();
break;
case Constants.VAL_EMAIL : flag = validateEmail();
break;
case Constants.VAL_LENGTH : flag = validateLength();
break;
case Constants.VAL_NUMERIC : flag = validateNumeric();
break;
case Constants.VAL_STRING : flag = validateNumeric();
break;
default : flag = validateNotNull();
break;
}
}
}
return flag;
}