如何使用Builder模式跳过设置属性

问题描述

使用Lombok构建Phone对象。如何跳过使用Builder模式设置属性说“名称”的情况,如果出于某种原因它将为空

protected Phone createPhone(String number,String name) {
    return Phone.builder()
        .number(number)
        .name(name)
        .type(PhoneType.MOBILE)
        .build();
}

解决方法

可以在Lombok中“替代”构建器方法。例如,您可以使用这种方式(简化为Phone):

@Builder
@Getter @Setter
public class Phone {
    private String number;
    private String name;
    
    public static class PhoneBuilder {
        // Lombok does not generate name "setter" but uses this instead
        public PhoneBuilder name(String name) {
            if (null == name) {
                // throw or ignore or whatever
                throw new NullPointerException("Name NULL");
            }
            this.name = name;
            return this;
        }
    }
}