[英]How to create a constructor/builder for nested Java classes?
假設我想模擬具有以下結構的 class ,用於測試目的:
@Data
public class Street() {
private House house;
@Data
static class House {
private List<Room> rooms;
}
@Data
static class Room {
private Door door;
}
@Data
static class Door {
private String material;
}
}
簡明扼要地創建Street
object 的最佳方法是什么,其中包含一個帶有木門Room
的House
?
我正在考慮向Street
class 添加 Lombok @Builder
注釋,但發現我還需要每個嵌套類的構建器,並且想知道是否有更清潔的方法來實現這一點。
我唯一的建議是:
public class Street {
private House house;
private Room room;
private Door door;
public class House{
//build class House
}
public class Room{
//build class Room
}
public class Door{
//build class Door
}
public Street(House house, Room room, Door door) {
this.house = new House();
this.room = new Room();
this.door = new Door();
}
}
然后您可以在 Street class 內使用您必須訪問嵌套在 Street 中的其他小類的方法的對象
使用 lombok 項目中的 @SuperBuilder
假設你有:
@Getter
@SuperBuilder
public class Parent {
private final String parentName;
private final int parentAge;
}
@Getter
@SuperBuilder
public class Child extends Parent {
private final String childName;
private final int childAge;
}
@Getter
@SuperBuilder
public class Student extends Child {
private final String schoolName;
}
然后你可以像這樣創建一個新的學生:
Student student = Student.builder()
.parentName("Andrea")
.parentAge(38)
.childName("Emma")
.childAge(6)
.schoolName("Baeldung High School")
.build();
參考: https://www.baeldung.com/lombok-builder-inheritance#lombok-builder-and-inheritance-1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.