簡體   English   中英

使用帶有抽象 class 的 lombok builder

[英]using lombok builder with an abstract class

我有這個抽象的 class:

public abstract class Hotel {

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

和這個從抽象 class 擴展而來的龍目島 class:

@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 values.add("ww");

Builder class 需要先創建一個新實例。 而且,您使用的列表是不可變的。 用戶邁克爾已經注意到這兩個問題。 在任何情況下,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;
        }
    }    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM