gpt4 book ai didi

java - 继承泛型

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:51 25 4
gpt4 key购买 nike

假设我这样定义一个抽象类:

public class Response<T> {
private List<Response<T>> subResponses;
}

和两个这样定义的子类:

public class SectionResponse extends Response<SectionResponse> {
}

public class FormResponse extends Response<FormResponse> {
}

基本上Response的所有子类都需要有同一个类的列表。现在在代码的其他地方我想要一个可以包含任一子类的 Response 对象列表。

在不使用原始类型的情况下定义此列表的最佳方法是什么?我试过了 List<? extends Response<?>>但我不能在这样定义的 List 上调用 add 方法,因为参数是参数化类型。

最佳答案

使用 Put-Get-Rule .即返回List<? extends Response<?>>但接受List<? super Response<?>>作为参数。在内部,您会将列表存储为 List<Response>

请注意,我会谨慎返回 List<? extends Response<?>>在界面上,因为它可能会侵入消费者。在大多数情况下,接口(interface)最好确定通用类型,这样您就可以返回类似 List<Response<MyType>> 的内容。如果可能的话。

关于java - 继承泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15485811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com