[英]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.