base - 如何更优雅的实现字段校验?

202 阅读1分钟

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

public class ValidTest {

    public static void main(String[] args) {
        Valid valid = new Valid();

        boolean re = valid.valid(Valid.NAME, Valid.AGE);

        TestPrint.print("valid", re);

        valid.setName("helle");
        valid.setAge("18");

        re = valid.valid(Valid.NAME, Valid.AGE);

        TestPrint.print("valid", re);
    }

    @Data
    static class Valid {
        private String name;
        private String age;

        public static final String NAME = "name";
        public static final String AGE  = "age";

        // 验证
        public boolean valid(String ... fields) {
            Map<String, Boolean> map = setFields(fields);

            if (map.get(NAME) && null != this.name) {
                return true;
            } else if (map.get(AGE) && null != this.age) {
                return true;
            }

            return false;
        }

        // 在这里录入要验证的所有字段
        public Map<String, Boolean> setFields(String ... fields) {

            Map<String, Boolean> map = new HashMap<>();

            // 初始化
            map.put(NAME, false);
            map.put(AGE, false);

            // 指定要验证的字段,前提条件 - 要验证的字段包含在初始化字段之中
            if (null != fields) {
                for (String field : fields) {
                    map.put(field, true);
                }
            }

            return map;
        }
    }
}

# 运行结果
valid ---- false
valid ---- true