我有几个客户端类通过 PUT 方法将 bean 列表发送到球衣网络服务,因此我决定使用泛型将它们重构为一个类。我的第一次尝试是这样的:
public void sendAll(T list,String webresource) throws ClientHandlerException {
WebResource ws = getWebResource(webresource);
String response = ws.put(String.class, new GenericEntity<T>(list) {});
}
但是当我用以下方式调用它时:
WsClient<List<SystemInfo>> genclient = new WsClient<List<SystemInfo>>();
genclient.sendAll(systemInfoList, "/services/systemInfo");
它给了我这个错误:
com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class java.util.ArrayList, and MIME media type, application/xml, was not found
所以我尝试取出 GenericEntity 声明的方法,它可以工作:
public void sendAll(T list,String webresource) throws ClientHandlerException {
WebResource ws = ws = getWebResource(webresource);
String response = ws.put(String.class, list);
}
调用它:
WsClient<GenericEntity<List<SystemInfo>>> genclient = new WsClient<GenericEntity<List<SystemInfo>>>();
GenericEntity<List<SystemInfo>> entity;
entity = new GenericEntity<List<SystemInfo>>(systemInfoList) {};
genclient.sendAll(entity, "/services/systemInfo");
那么,为什么我不能在类中生成泛型类型的泛型实体,而在外部生成呢?