java - 方法链来构建一个对象,该对象通过 Lombok Builder 在两个对象上具有另一个对象
问题描述
我有Person
一个类,它有一个内部类的引用类型字段Address
。
当实例化一个Person
对象时,我想通过 Lombok 使用方法链接策略和构建器模式,@Builder
如下所示。
class PersonTest {
@Test
void builder() {
Person.builder()
.name("James")
.addressBuilder()
.cityName("Seoul")
.zipCode("16814")
.buildAddress()
.build();
}
}
我一直在寻找 Lombok 文档和 stackoverflow 中的任何技巧来使用上面的构建器模式,但我不能
所以我向下面的构建器类添加了一些方法,并且使用我的 intellij 它没有显示错误。
@Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class Person {
private String name;
private Address address;
public static class PersonBuilder {
public Address.AddressBuilder addressBuilder(){
return new Address.AddressBuilder(this);
}
}
@Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)
private static class Address {
private String cityName;
private String zipCode;
public static class AddressBuilder{
private PersonBuilder personBuilder;
private AddressBuilder(PersonBuilder personBuilder){
this.personBuilder=personBuilder;
}
public PersonBuilder buildAddress(){
return personBuilder.address(this.build());
}
}
}
}
但是,在运行测试代码时,有一个构建错误说,
java:com.sample.entity.Person.Address.AddressBuilder 类中的构造函数 AddressBuilder 不能应用于给定类型;必需:com.sample.entity.Person.PersonBuilder 找到:无参数原因:实际参数列表和正式参数列表的长度不同
我希望找到任何解决此构建错误的方法,或者如果可能的话,找到一种优雅的方式来使用上面的方法链。
解决方案
推荐阅读
- virtual-machine - VM 卡在“已开始更新 UTMP 关于系统运行级别更改”
- javascript - 从表中的多个下拉列表中获取相同选项的计数
- regex - 如果满足某些条件,如何匹配整个字符串
- javascript - Fabric js如何防止对象在画布边界之外缩放?
- c++ - 如何在现代 openGL 中从二维数组中绘制图像
- youtube-data-api - 获取频道“视频”小节中列出的 youtube 视频
- dns - 使用 servFail 绑定(命名)失败的解析请求
- centos - CentOS 安装程序
- c++ - 在以下数字中找到自恋值
- javascript - 无空间和空间 GeoJSON 如何在弹出窗口和地图传单中显示数据