【发布时间】:2022-01-17 20:00:07
【问题描述】:
如何为第三方类创建 Lombok 构建器(即我无法修改其源代码)?
我有一个无法更改的现有课程:
public class ThirdPartyPojo {
// one of many properties
private String name;
public ThirdPartyPojo() {
// default no-args constructor
}
String getName() {
return this.name;
}
void setName(String name) {
this.name = name;
}
// many more getters and setters
}
现在我想创建一个@Builder,以便获得一个流畅的构建器 API,以简化使用默认值的ThirdPartyPojo 的实例化。
这是我尝试过的:
@Builder
public class ThirdPartyPojoBuilder extends ThirdPartyPojo {
@Default
private String name = "default name";
// many more default values for other properties
}
代码编译,我可以引用构建器,例如
ThirdPartyPojo pojoWithDefaultName = ThirdPartyPojoBuilder.builder().build();
ThirdPartyPojo pojoWithCustomName = ThirdPartyPojoBuilder.builder().name("custom name").build();
System.out.println(pojoWithDefaultName.getName());
System.out.println(pojoWithCustomName.getName());
但是,这不起作用,因为 getName() 为 pojoWithDefaultName 和 pojoWithCustomName 返回 null。
【问题讨论】:
-
尝试在实体上添加
@Builder and @Data ( @Setter , @Getter ) -
@DilermandoLima 你能详细说明一下吗?您是否建议我将这些注释添加到
ThirdPartyPojo?这是一个外部依赖,所以我不能修改它的源代码。