java中递进式判断如何优化?

 代码如下:

 private static void test(String a, String b, String c, String d) {
        if (StringUtils.isNotEmpty(a) && StringUtils.isNotEmpty(b) && StringUtils.isNotEmpty(c) && StringUtils.isNotEmpty(d)) {
            //都不为空 do something
        } else if (StringUtils.isNotEmpty(a) && StringUtils.isNotEmpty(b) && StringUtils.isNotEmpty(c) && StringUtils.isEmpty(d)) {
            //abc不为空且d为空 do something
        } else if (StringUtils.isNotEmpty(a) && StringUtils.isNotEmpty(b) && StringUtils.isEmpty(c) && StringUtils.isEmpty(d)) {
            //ab不为空且cd为空 do something
        } else if (StringUtils.isNotEmpty(a) && StringUtils.isEmpty(b) && StringUtils.isEmpty(c) && StringUtils.isEmpty(d)) {
            //a不为空且bcd为空 do something
        } else if (StringUtils.isEmpty(a) && StringUtils.isEmpty(b) && StringUtils.isEmpty(c) && StringUtils.isEmpty(d)) {
            //都为空 do something
        }
    }

 

使用套娃模式, 更清晰一些 每一个判断条件 只写一次

private static void test(String a, String b, String c, String d) {
        if (StringUtils.isNotEmpty(a)) {
            if (StringUtils.isNotEmpty(b)) {
                if (StringUtils.isNotEmpty(c)) {
                    if (StringUtils.isNotEmpty(d)) {
                        //都不为空 do something
                    } else {
                        //abc不为空且d为空 do something
                    }
                } else if (StringUtils.isEmpty(d)) {
                    //ab不为空且cd为空 do something
                }
            } else if (StringUtils.isEmpty(c) && StringUtils.isEmpty(d)) {
                //a不为空且bcd为空 do something
            }
        } else if (StringUtils.isEmpty(b) && StringUtils.isEmpty(c) && StringUtils.isEmpty(d)) {
            //都为空 do something
        }
    }

 

你可以考虑使用列表作为参数 来循环判断 前几个值都有值的话,执行什么方法