以前用java枚举类型的时候都是在类里面使用,用做switch开关,最近把一个枚举独立成一个类后,发现在其他地方使用switch有一定的困难。下面实现为根据不同枚举类型验证不同数据格式。
public enum BSEnum {
/**
* 该字段要求非空
*/
NOTNULL {
@Override
public String validate(Object object) {
boolean rs = ValidateUtil.isNull((String)object);
return rs == true ? "字段数据不能为空," : null;
}
},
/**
* 该字段为身份证号
*/
CARDID {
@Override
public String validate(Object object) {
boolean rs = ValidateUtil.validateSfz((String)object);
return rs == false ? "身份证号不正确," : null;
}
},
/**
* 该字段类型为手机类型
*/
PHONE {
@Override
public String validate(Object object) {
boolean rs = ValidateUtil.isPhone((String)object);
return rs == false ? "电话号码不正确," : null;
}
},
/**
* 该字段类型为邮箱
*/
EMAIL {
@Override
public String validate(Object object) {
boolean rs = ValidateUtil.isEmail((String)object);
return rs == false ? "邮箱地址不正确," : null;
}
},
/**
* 该字段表示银行卡号
*/
BANKNUMBER {
@Override
public String validate(Object object) {
boolean rs = ValidateUtil.isBankCard((String)object);
return rs == false ? "银行卡号不正确," : null;
}
},
/**
* 该值为数字。
*/
NUMBER {
@Override
public String validate(Object object) {
boolean rs = ValidateUtil.isNumber((String)object);
return rs == false ? "不为数字," : null;
}
},
/**
* 该字段未知类型
*/
OTHER {
@Override
public String validate(Object object) {
return null; // 该字段未知时,始终通过验证。
}
};
/**
* 数据格式验证类
* @param object : 验证数据object
* @return : 非空验证失败, 空验证成功
*/
public abstract String validate(Object object);
public static BSEnum convertEnum(String type) {
if(type == null)
return BSEnum.NOTNULL;
if(type.equals("OTHER")) {
return BSEnum.OTHER;
}
else if(type.equals("NOTNULL")) {
return BSEnum.NOTNULL;
}
else if(type.equals("CARDID")) {
return BSEnum.CARDID;
}
else if(type.equals("PHONE")) {
return BSEnum.PHONE;
}
else if(type.equals("EMAIL")) {
return BSEnum.EMAIL;
}
else if(type.equals("BANKNUMBER")) {
return BSEnum.BANKNUMBER;
}
else {
return BSEnum.NOTNULL;
}
}
}
在类外部可以如下方式调用:
BSEnum type = BSEnum.EMAIL;
String rs = type.validate("xxx@.xx.com");