0

我对我正在处理的实现有点困惑。这是我想调用的方法

<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)

PS:这是我第一次处理泛型

4

1 回答 1

1

这种类型的方法<T> T method(things that don't mention T)——几乎从来都不是你想要做的,而且非常危险,因为它们不可避免地涉及到可能不起作用的强制转换——但在运行时失败之前你不会被警告。我怀疑这个方法的返回类型应该只是WSResponse,但你的问题不够清楚,我无法确定。

于 2012-04-17T16:17:30.627 回答