我对正在执行的实现感到困惑。我想调用的这个方法

<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,但是您的问题尚不清楚,我无法确定。

10-02 09:57