【发布时间】:2017-03-15 11:28:30
【问题描述】:
我正在使用 retrofit2 构建一些同步 json 代理。
我的服务器的响应总是格式:
{status:code, something:{complex object}}
所以我有:
public class BasicResponse<T> {
private T data;
@SerializedName("status")
private String status;
}
我的解析器有一个动态定义类型的映射,并根据服务器响应中“某事”的名称创建一个BasicResponse<T>
实际上一切正常,当“某事”返回我正在使用数组处理的对象列表时。
但我想将数组更改为任何类型的集合,我真的不想更改解析器,所以我创建了一个方法:
private <U> BasicResponse<U> handleResponse(Response<? extends BasicResponse<U>> resp){
BasicResponse handledResponse = null;
if (resp != null && resp.isSuccessful() && resp.body() != null) {
resp.body();
if(handledResponse.getData().getClass().isArray())
handledResponse.setData(Arrays.asList(handledResponse.getData()));
//a lot of others stuff
return handledResponse;
}
在这种方法中,我想得到一些“resp”作为BasicResponse<User[]> 并将其转换为BasicResponse<List<User>>
但由于List<User> 与User[] 不同,java 无法编译返回,我需要有两个可以相同或不同的泛型类型...
有可能吗?
【问题讨论】: