如何指示泛型类从一个或另一个类扩展?

时间:2019-04-12 12:05:13

标签: java class

嗨,我下一堂课

public class ApiResponse<T extends ApiResponseData > 

TApiResponseData的类型时,有时我会收到列表而不是对象,在这种情况下,我需要将T从{{1 }}或ApiResponseData如何做到?

我的尝试

List<ApiResponseData>

3 个答案:

答案 0 :(得分:4)

我认为您对通用类型参数的用途有基本的误解。为什么您认为需要更改type参数以容纳列表?

为什么这样的东西还不够?

class ApiResponse<T extends ApiResponseData>
{
    final List<T> data;

    ApiResponse(T datum)
    {
        data = Collections.singletonList(datum);
    }

    ApiResponse(List<T> data)
    {
        this.data = data;
    }
}

答案 1 :(得分:1)

调用此方法时,您可以等待public class ApiResponse<T extends List<ApiResponseData> >并将T extends ApiResponseData的情况视为一个元素的列表(在代码中较高)

答案 2 :(得分:1)

这是不可能的,因为Java决定在类型擦除期间使用哪个类将变得不明确。您可以使用泛型来指定约束,例如T需要像<T extends A & B>这样的多个类的子类,例如Access-Control-Allow-Origin: * ,但是您的用例是不可能的。