我对正在执行的实现感到困惑。我想调用的这个方法<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();
调用此post方法的方法具有此签名
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;
}
现在我对这种方法的返回类型感到困惑。它会保留T还是其他?如果将其从T更改为WSRespons,则会收到未实现方法
callPost
的错误。方法
callPost
被称为GPClient cl = new GPClient(myhttpParams);
cl.callPost(d)
附言:
这是我第一次处理仿制药
最佳答案
这种类型的方法-<T> T method(things that don't mention T)
-几乎永远都不是您想要做的,并且非常危险,因为它们不可避免地涉及可能不起作用的强制转换-但在运行时失败之前不会警告您。我怀疑此方法的返回类型应该只是WSResponse
,但是您的问题尚不清楚,我无法确定。