如何自定义Lombok自动生成的getter方法名称?
Lombok 自定义Getter方法名实现方式
Lombok原生没有提供注解参数或全局配置,支持直接给单个字段指定自定义getter名称。要把示例中boolean字段默认生成的isLogReceivedMessages()改成shouldLogReceivedMessages(),最简便的实现方式就是直接在类中编写你需要的自定义getter方法。
Lombok在生成代码时会自动检测类中已存在的方法,只要你手动写了目标名称的getter,Lombok就不会再生成默认的is前缀getter,不会产生方法冲突。改造后的Context类示例如下:
@Getter @Builder(setterPrefix = "with") @AllArgsConstructor(access = AccessLevel.PRIVATE) public class Context { @Builder.Default private final boolean logReceivedMessages = false; // 手动编写自定义名称的getter,Lombok不会再生成默认的isLogReceivedMessages() public boolean shouldLogReceivedMessages() { return logReceivedMessages; } ... many other fields ... }
这种写法完全不影响原有@Builder的逻辑,原来的实例构建代码不需要做任何修改:
context = Context.builder().withLogReceivedMessages(true).build();
业务调用时直接使用自定义的方法名即可:
if(context.shouldLogReceivedMessages()) { XYZ } else { zyx }
使用时注意两点:
- 仅需要给要修改名称的字段单独手写getter即可,其余字段的getter依旧会由Lombok自动生成,不需要额外改动
- Lombok目前没有提供全局配置项统一修改boolean类型字段的getter生成前缀,如果需要批量替换所有boolean字段的getter前缀,要么逐个手写对应方法,要么自行开发扩展注解处理器,后者实现成本较高,常规业务项目不推荐使用。
内容的提问来源于stack exchange,提问作者tftd
相关产品推荐
相关产品推荐

