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

如何无样板代码初始化类及依赖字段(含Lombok场景)

解决方案:用Lombok实现无样板代码的字段自动初始化

既然你已经在项目中使用Lombok,刚好有几个非常贴合需求的标准实践方案,完全不用手写构造函数就能让PivotModel实例化时自动初始化所有依赖字段为新对象,全程零样板代码:

方案1:字段初始化表达式 + @Data注解

这是最直接简单的方案,直接在字段定义时指定初始化表达式,配合Lombok的@Data注解生成必要的getter/setter、toString等方法:

@Data
public class PivotModel {
    // 直接在字段声明时初始化新对象
    private Model1 model1 = new Model1();
    private Model2 model2 = new Model2();
    private Cell1 cell1 = new Cell1();
    private Cell2 cell2 = new Cell2();
}

当你执行PivotModel pivotModel = new PivotModel()时,所有依赖字段都会自动被实例化为新对象,完全不需要手动编写构造函数。

方案2:@Builder配合默认值(适合需要灵活构建的场景)

如果后续需要偶尔自定义某个字段的实例(比如替换成特定配置的Model1),可以结合@Builder注解,同时保留字段的默认初始化逻辑:

@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class PivotModel {
    private Model1 model1 = new Model1();
    private Model2 model2 = new Model2();
    private Cell1 cell1 = new Cell1();
    private Cell2 cell2 = new Cell2();
}

这个方案的好处是:

  • 既可以用new PivotModel()自动初始化所有字段
  • 也可以用构建器模式灵活覆盖特定字段,比如:PivotModel.builder().model1(customModelInstance).build()

方案3:不可变对象场景的优化(可选)

如果你希望这些依赖字段是不可变的(实例化后不允许修改),可以结合@FieldDefaults注解把字段设为final,同时保留初始化表达式:

@Data
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
public class PivotModel {
    private Model1 model1 = new Model1();
    private Model2 model2 = new Model2();
    private Cell1 cell1 = new Cell1();
    private Cell2 cell2 = new Cell2();
}

这样所有字段会被设为私有且不可变,实例化后无法修改,适合不需要变更依赖的场景。

以上都是Lombok生态中的标准实践,完全满足你“无样板代码”的需求,不用手动编写任何构造函数就能实现目标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:15:29