0

我有这个抽象类:

public abstract class Hotel {

     protected List<String> defaultValues() {
        return List.of("Geeks", "For", "Geeks");
    }
}

这个从抽象类扩展而来的龙目岛类:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class Hostel extends Hotel {         
    private List<String> values = defaultValues();    

    @SuppressWarnings("unused")
    public static class HosteBuilder {

        public Hostel build() {    
            this.values.add("ww");    
            ...
        }
    }    
}

但我在行中有一个空指针values.add("ww");

4

1 回答 1

-1

Builder 类需要先创建一个新实例。而且,您使用的列表是不可变的。用户迈克尔已经注意到这两个问题。在任何情况下,lombok都不应该为此负责,因为它只添加了方法,而您在示例中都没有使用这些方法。

首先,将列表更改为可变列表类型:

return Arrays.asList(new String[]{"Geeks", "For", "Geeks"});

并将类型扩展为:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class Hostel extends Hotel {         
    private List<String> values = defaultValues();    

    @SuppressWarnings("unused")
    public static class HosteBuilder {

        public Hostel build() {
            Hostel hostel = new Hostel();
            hostel.values.add("ww");    
            // ...
            return hostel;
        }
    }    
}
于 2020-04-16T10:26:39.143 回答