废话不多说,上代码》
BranchHandle
package com.design.designdemo.func;
@FunctionalInterface
public interface BranchHandle {
void trueOrFalseHandle(Runnable trueHandle, Runnable falseHandle);
}
package com.design.designdemo.func;
import java.util.function.Consumer;
public interface PresentOrElseHandler<T extends Object> {
void presentOrElseHandle(Consumer<? super T> action, Runnable emptyAction);
}
package com.design.designdemo.func;
@FunctionalInterface
public interface TrueHandler {
void trueHandle(Runnable trueHandle);
}
package com.design.designdemo.func;
import com.xiao.it.api.error.ErrorCode;
/**
* @Description FuncUtil
* @Author fuhao
* @CreateTime 2024/8/21 19:11
*/
public class FuncUtil {
public static BranchHandle isTureOrFalse(boolean b){
return (trueHandle, falseHandle) -> {
if (b){
trueHandle.run();
} else {
falseHandle.run();
}
};
}
public static TrueHandler trueHandler(boolean b){
return (trueHandle) -> {
if (b){
trueHandle.run();
}
};
}
// 静态方法,用于在条件为 true 时抛出异常
public static void throwIfTrue(boolean condition, ErrorCode errorCode) {
if (condition) {
throw new BizException(errorCode);
}
}
}
package com.design.designdemo.func;
import com.design.designdemo.exception.CustomErrorCodes;
import com.xiao.it.api.error.ErrorCode;
/**
* @Description FuncDemo
* @Author fuhao
* @CreateTime 2024/9/4 19:38
*/
public class FuncDemo {
public static void main(String[] args) {
// List<AuditLog> auditLogs = auditLogList.stream().sorted(Comparator.comparing(AuditLog::getCreateTime,
// Comparator.nullsFirst(Comparator.naturalOrder())).reversed()).collect(Collectors.toList());
boolean booleanResult = false;
FuncUtil.isTureOrFalse(booleanResult).trueOrFalseHandle(() -> {
// todo
System.out.println("if true 执行了");
},() -> {
//无操作
System.out.println("if true 不通过 为false 执行了");
});
boolean tureHandler = true;
FuncUtil.trueHandler(tureHandler).trueHandle(() -> {
System.out.println("---tureHandler--");
});
// 示例用法
boolean condition = true; // 这是一个示例条件
ErrorCode errorCode = CustomErrorCodes.CUSTOM_ERROR1;
// 使用工具类方法
FuncUtil.throwIfTrue(condition, errorCode);
}
}
public class ErrorCodeBase {
private static Map<String, ErrorCode> nameToErrors = new HashMap();
private static Map<Integer, ErrorCode> codeToErrors = new HashMap();
public ErrorCodeBase() {
}
protected static void addErrorMessageResource(String resourceName) {
I18n.addResource(resourceName);
}
protected static ErrorCode register(int code, String name) {
ErrorCode errorCode = new ErrorCode(code, name);
if (nameToErrors.containsKey(name)) {
throw new IllegalArgumentException("duplicate error name: " + name);
} else if (codeToErrors.containsKey(code)) {
throw new IllegalArgumentException("duplicate error code: " + code);
} else {
nameToErrors.put(name, errorCode);
codeToErrors.put(code, errorCode);
return errorCode;
}
}
public static List<ErrorCode> getAll() {
return (List)codeToErrors.values().stream().sorted(Comparator.comparing(ErrorCode::getCode)).collect(Collectors.toList());
}
public static String errorMessage(ErrorCode code) {
return (String)I18n.format(String.valueOf(code.getCode())).orElse(code.getName());
}
public static String errorMessage(ErrorCode code, Locale locale) {
String codeKey = String.valueOf(code.getCode());
return (String)I18n.format(codeKey, locale).orElse(code.getName());
}
}
public class ErrorCodes extends ErrorCodeBase {
public static final ErrorCode OK = register(0, "OK");
public static final ErrorCode BAD_REQUEST = register(40000000, "BAD_REQUEST");
public static final ErrorCode BAD_PARAMETER = register(40000001, "BAD_PARAMETER");
public static final ErrorCode MISSING_PARAMETER = register(40000002, "MISSING_PARAMETER");
public static final ErrorCode DUPLICATED_PARAMETER = register(40000003, "DUPLICATED_PARAMETER");
public static final ErrorCode BAD_FORMAT_CONTENT = register(40000004, "BAD_FORMAT_CONTENT");
public static final ErrorCode GATEWAY_TIMEOUT = register(50400000, "GATEWAY_TIMEOUT");
public ErrorCodes() {
}
}
public class CustomErrorCodes extends ErrorCodes {
/**
* resources中的配置文件名称前缀
*/
private static final String RESOURCE_ERROR_MESSAGE_NAME = "errorcode/custom_error_message";
static {
addErrorMessageResource(RESOURCE_ERROR_MESSAGE_NAME);
}
/**
* 自定义错误1
*/
public static final ErrorCode CUSTOM_ERROR1 = register(40099120, "CUSTOM_ERROR1");
/**
* 自定义错误2,
*/
public static final ErrorCode CUSTOM_ERROR2 = register(40099999, "CUSTOM_ERROR2");
}