簡體   English   中英

如何為嵌套的 Java 類創建構造函數/構建器?

[英]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 的最佳方法是什么,其中包含一個帶有木門RoomHouse

我正在考慮向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.

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