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



嗨,我有下一堂课

public class ApiResponse<T extends ApiResponseData > 

TApiResponseData的一种类型时,但有时我会收到列表而不是对象,在这种情况下,我需要将TApiResponseDataList<ApiResponseData>扩展,怎么能做到这一点?

我的尝试

public class ApiResponse<T extends ApiResponseData || T extends List<ApiResponseData>> 

我认为您对泛型类型参数的目的有根本的误解。为什么您认为需要更改类型参数以适应列表?

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

class ApiResponse<T extends ApiResponseData>
{
final List<T> data;
ApiResponse(T datum)
{
data = Collections.singletonList(datum);
}
ApiResponse(List<T> data)
{
this.data = data;
}
}

这是不可能的,因为 java 决定在类型擦除期间使用哪个类是模棱两可的。您可以使用 Generic 来指定约束,例如 T 需要是多个类的子类,例如 (A & B),例如<T extends A & B>但您的用例是不可能的。

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

最新更新