我对我正在进行的实施感到困惑。这是我想调用的方法
<I, O, T> T post(String url, I data, ContentBuilder<I, HttpEntity> contentBuilder, ResponseHandler<? extends T> responseHandler);
现在我必须写几个将用于ContentBuilder和responsehandler的类。需要注意的是返回类型 T 。
我编写了一个抽象类WSResponse
,然后将其扩展为MyWSResponse
,以便我的响应处理程序看起来像
ResponseHandler <WSResponse> rh = new MyWSResponse();
调用此帖子方法的方法具有此签名
public interface GPCl{
public <T> T callPost (String data)
}
...
public <T> T callPost(String data){
HttpWebServiceClient client = getHttpWSClient();
ContentBuilder<String, HttpEntity> contentBuilder = new MyXMLBuilder();
ResponseHandler<WSResponse> rh= new MyWSResponse();
WSResponse wsResponse = client.post("", data, contentBuilder, rh);
return (T)wsResponse;
}
现在我对此方法的 return 类型感到困惑。它会保持 T 还是其他什么?如果我将它从T更改为WSRespons,我收到一个错误,我没有实现方法callPost
。
方法callPost
被称为
GPClient cl = new GPClient(myhttpParams);
cl.callPost(d)
P.S: 这是我第一次处理泛型
答案 0 :(得分:1)
这种类型的方法 - <T> T method(things that don't mention T)
- 几乎不是你想要做的,而且非常危险,因为它们不可避免地涉及可能不起作用的演员阵容 - 但你不会被警告直到它在运行时失败。我怀疑这个方法的返回类型应该是WSResponse
,但是你的问题不够明确,我无法确定。