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

关于Lombok @Singular注解使用方式正确性的咨询

关于@Singular注解的用法解析

你的代码确实能正常运行,但这种使用方式不符合@Singular注解的设计意图,属于不规范写法,原因和规范用法如下:

为什么你的写法不规范

@Singular注解的核心作用是为集合字段生成「单个元素添加方法」和「批量元素添加方法」,默认会把集合字段的复数名称转为单数作为单个添加的方法名(比如字段carViews对应方法addCarView)。

你现在给@Singular传入了和字段名完全一样的参数"carViewList",导致生成的单个添加方法名和字段名重复,虽然语法合法,但可读性极差,完全浪费了@Singular注解的设计价值。

规范使用方式

方式一:让Lombok自动推断单数方法名

推荐用复数形式命名集合字段,Lombok会自动生成符合语义的方法:

@Data
@Builder
public class CarViews {
    @Singular
    private List<CarResponse> carViews; // 复数字段名
}

调用时可以用单个添加或批量添加方法:

private CarViews prepareCarList() {
    CarResponse carResponse = CarResponse.builder().build();
    return CarViews.builder()
            .carView(carResponse) // 单个添加元素
            // 批量添加:.carViews(Collections.singletonList(carResponse))
            .build();
}

方式二:手动指定单数方法名

如果坚持用carViewList作为字段名,应该把@Singular的参数设为字段的单数形式:

@Data
@Builder
public class CarViews {
    @Singular("carView") // 指定单个添加的方法名为carView
    private List<CarResponse> carViewList;
}

调用时语义清晰:

private CarViews prepareCarList() {
    CarResponse carResponse = CarResponse.builder().build();
    return CarViews.builder()
            .carView(carResponse) // 单个添加
            .carViewList(Collections.singletonList(carResponse)) // 批量添加
            .build();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:01:19