Sealed Classes

sealed Interface

permits

// Response와 SeriesListObject 타입만 [interface SeriesSubscribeList] 를 상속받을 수 있다.
public sealed interface SeriesSubscribeList permits Response, SeriesListObject {

  @Schema(name = "SeriesSubscribeList.Response")
  record Response(
    List<SeriesListObject> seriesList
  ) implements SeriesSubscribeList { 
    @Builder  //기본 생성자의 Builder를 설정하여 사용할 수 있다.
    public Response {
    }
  }

...

@Schema(name = "SeriesSubScribeList.SeriesListObject")
  record SeriesListObject(
    Boolean isLiked,
    Long userId,
    Long writerId,
    Long seriesId,
    String nickname,
    String thumbnail,
    String title,
    String introduceSentence,
    LocalDate seriesStartDate,
    LocalDate seriesEndDate,
    String subscribeStatus,
    LocalDate subscribeStartDate,
    LocalDate subscribeEndDate,
    int likes,
    Series.Category category
  ) implements SeriesSubscribeList {
    @Builder 
    public SeriesListObject {
    }
  }

...

참고 자료