0

我正在使用该immutables库从接口创建不可变对象。但是,我找不到使生成的类相互扩展以使它们具有多态性的方法。

考虑这段代码:

@Value.Immutable
@ImmutableStyle
@JsonSerialize
public interface AbstractAdvert {

    String getAdvertName();

    @Nullable
    String getAdvertRef();

    AdvertPrice getPrice();

    AdvertProvider getProvider();

    @Value.Default
    default Boolean getBillsIncluded() {
        return false;
    }

    @Value.Immutable
    @ImmutableStyle
    @JsonSerialize
    interface AbstractStudioAdvert extends AbstractAdvert {

    }
}

这将生成两个类:AdvertStudioAdvert

我想在其他地方有List<Advert>作为参数的方法,但它也接受,List<StudioAdvert>因此我需要这里的多态性。

TLDR:上面的代码不会生成StudioAdvert扩展Advert。不过,我希望他们有这种关系。

任何建议表示赞赏。

编辑 1

在我的用例中,假设我有 aList<StudioAdvert>和 aList<RoomAdvert>我想传递给同一个函数进行处理。List<Advert>如果我使用orList<AbstractAdvert>作为方法的参数,以下方法目前不起作用。

public static ProcessedResult processResult(List<AbstractAdvert> adverts) {
    ...
}

问题如下。 在此处输入图像描述

4

0 回答 0