首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Generics实现类

使用Generics实现类
EN

Stack Overflow用户
提问于 2012-04-17 15:44:36
回答 1查看 84关注 0票数 0

我对我正在做的实现感到困惑。这是我应该调用的方法

<I, O, T> T post(String url, I data, ContentBuilder<I, HttpEntity> contentBuilder, ResponseHandler<? extends T> responseHandler);

现在,我必须编写几个类,这些类将用于ContentBuilder和响应处理程序。需要注意的是返回类型T。

我编写了一个抽象类WSResponse,然后将其扩展为MyWSResponse,这样我的响应处理程序就像

ResponseHandler <WSResponse> rh = new MyWSResponse();

调用此post方法的方法具有此签名。

代码语言:javascript
复制
public interface GPCl{
   public <T> T callPost (String data)
}

..。

代码语言:javascript
复制
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被调用为

代码语言:javascript
复制
GPClient cl = new GPClient(myhttpParams);
cl.callPost(d)

这是我第一次和仿制药打交道

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-17 16:17:30

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10194462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档