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

代码重构:如何将不同类型的重复代码提取为泛型方法?

提取Builder类中重复逻辑的解决方案

完全可以提取重复逻辑,利用Java的泛型方法就能处理不同类型的列表和参数,既消除重复代码又保持类型安全。

修改后的代码实现

class Builder
{
    private final List<UnitIf> unit = new ArrayList<>();
    private final List<TimeIf> time = new ArrayList<>();

    public Builder withUnit(final UnitIf aUnit)
    {
        addIfNotNull(unit, aUnit);
        return this;
    }

    public Builder withTime(final TimeIf aTime)
    {
        addIfNotNull(time, aTime);
        return this;
    }

    // 提取的通用辅助方法,泛型支持任意类型的列表和元素
    private <T> void addIfNotNull(List<T> list, T element)
    {
        if (element != null)
        {
            list.add(element);
        }
    }
}

逻辑说明

  • 新增的addIfNotNull是泛型私有方法,<T>表示它可以处理任意类型的列表和元素,保证类型匹配不会出错
  • withUnit和withTime只需要调用这个辅助方法,传入对应的列表和参数,剩下的非空判断和添加逻辑都交给通用方法处理
  • 这种方式既简化了Builder类的结构,后续如果新增类似的withXXX方法,也可以直接复用这个辅助方法

内容的提问来源于stack exchange,提问作者ArtRac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:15:36