关于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
相关产品推荐
相关产品推荐

