嗨,我下一堂课
public class ApiResponse<T extends ApiResponseData >
当T
是ApiResponseData
的类型时,有时我会收到列表而不是对象,在这种情况下,我需要将T
从{{1 }}或ApiResponseData
如何做到?
我的尝试
List<ApiResponseData>
答案 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: *
,但是您的用例是不可能的。