public interface Matcher {
Object statusCode();
default boolean match(Object obj) {
if (ZYStrUtils.isNull(obj)) {
return false;
}
Object thisCode = statusCode();
if (ZYStrUtils.isNull(thisCode)) {
return false;
}
return String.valueOf(obj).equals(String.valueOf(thisCode));
}
static boolean contains(Matcher[] matchers, Object statusCode) {
if (ZYStrUtils.isNull(statusCode)) {
return false;
}
for (Matcher matcher : matchers) {
if (matcher.match(statusCode)) {
return true;
}
}
return false;
}
static <T extends Matcher> T findMatcher(T[] matchers, Object statusCode) {
if (ZYStrUtils.isNull(statusCode)) {
return null;
}
for (T matcher : matchers) {
if (matcher.match(statusCode)) {
return matcher;
}
}
return null;
}
}
使用示例:
public enum SubmitHandleType implements Matcher {
// xx
MAIN_ASSIST,
// xx
MAIN,
// xx
ASSIST,
// xx
PUBLISH;
@Override
public Object statusCode() {
return this.name().toLowerCase();
}
}
// 相比SubmitHandleType.PUBLISH.name.tolowcase.equals(portionOfficeType)
// 代码更加严谨
public Long computerAnswerTime(StringportionOfficeType) {
if (SubmitHandleType.PUBLISH.match(portionOfficeType)) {
...
} else if (SubmitHandleType.ASSIST.match(portionOfficeType)) {
...
} else {
return null;
}
}
// SubmitHandleType xxx=Matcher.findMatcher(SubmitHandleType .values(),portionOfficeType);