You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现支持泛型的布尔校验全局静态方法,适配任意类型对象条件修改

泛型校验转换方法实现

要实现先做布尔校验、校验通过执行自定义修改、不通过返回原值的通用泛型方法,首先要注意:如果需要方法自动返回原始对象,必须把原始对象作为入参传入,更推荐使用无副作用的三参数实现,适配所有引用类型:

public static <T> T booleanCheck(T originVal, Predicate<T> checkCondition, Function<T, T> modifyLogic) {
    if (checkCondition.test(originVal)) {
        return modifyLogic.apply(originVal);
    }
    return originVal;
}

调用方式和你给出的示例逻辑完全匹配:

final String text = "test";
// 校验字符串非空就执行截取
final String newText = booleanCheck(text, s -> !s.isEmpty(), s -> s.substring(1));
// 输出结果为 tes

如果一定要用两参数版本,需要在lambda中捕获外部原始对象,实现如下:

public static <T> T booleanCheck(boolean condition, Supplier<T> modifyLogic) {
    return condition ? modifyLogic.get() : null;
}

调用时需要自己处理校验不通过时返回原值的逻辑:

final String text = "test";
final String newText = Optional.ofNullable(booleanCheck(!text.isEmpty(), () -> text.substring(1))).orElse(text);

这种写法不如三参数版本简洁,也更容易出现变量捕获的问题,不推荐使用。

注意:你示例代码中的subString拼写有误,Java 字符串截取方法是小写开头的substring。

内容的提问来源于stack exchange,提问作者Girls are beautiful

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:36:03