首页 > 解决方案 > 方法链来构建一个对象,该对象通过 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 找到:无参数原因:实际参数列表和正式参数列表的长度不同

我希望找到任何解决此构建错误的方法,或者如果可能的话,找到一种优雅的方式来使用上面的方法链。

标签: javalombokbuilder-pattern

解决方案


推荐阅读