我是一位有用的助手,可以为您进行翻译。以下是需要翻译的内容:
只要我的
然而,如果我的 `resultType` 是一个集合(比如 `List` 或 `List`),那么我不知道如何从调用者代码中传递 `resultType` 类的参数。
例如,从调用者代码中:
我使用基于Spring MVC的RESTful服务。 该服务具有RESTful资源方法,返回以下响应:
public class OperationalDataResponse<T> {
private String status;
private String statusMessage;
private T result;
//getters and setters
}
这个响应对象封装了类型为 T
的结果对象。
在客户端,我使用添加了 GsonHttpMessageConverter
的 RestTemplate
。
我将服务的响应作为 ResponseEntity
获取。
我通过运行时的 Type
处理通用响应,如下所示:
public class OperationalDataRestClient<REQ,RESULT_TYPE> {
public OperationalDataResponse<RESULT_TYPE> getOperationalData(String resourcePath, Map<String, Object> urlVariables, Class<RESULT_TYPE> resultType) {
//code to invoke service and get data goes here
String responseString = responseEntity.getBody();
response = GsonHelper.getInstance().fromJson(responseString, getType(OperationalDataResponse.class, resultType));
}
Type getType(final Class<?> rawClass, final Class<?> parameter) {
return new ParameterizedType() {
@Override
public Type[] getActualTypeArguments() {
return new Type[] { parameter };
}
@Override
public Type getRawType() {
return rawClass;
}
@Override
public Type getOwnerType() {
return null;
}
};
}
}
只要我的
resultType
不是集合类,这就像魔法一样好用。因此,从调用者代码使用起来非常棒。getOperationalData(someResourcePath, someUrlVariables, MyNonGenericClass.class)
然而,如果我的 `resultType` 是一个集合(比如 `List` 或 `List`),那么我不知道如何从调用者代码中传递 `resultType` 类的参数。
例如,从调用者代码中:
getOperationalData(someResourcePath, someUrlVariables, List.class)
或
getOperationalData(someResourcePath, someUrlVariables, List<MyNonGenericClass>.class)
抛出编译错误。
我尝试传递 ArrayList.class
也不起作用。
有什么建议可以将泛型集合作为resultType
从调用者代码传递(换句话说,例如,如何从调用者代码传递List<String>
或List<MyNonGenericClass>
的类对象?)