簡體   English   中英

使用泛型實現類

[英]Implementing classes using Generics

我對正在執行的實現感到困惑。 我想調用的這個方法

<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:這是我第一次處理仿制葯

這種類型的方法- <T> T method(things that don't mention T) -幾乎從來都不是您想要做的,並且非常危險,因為它們不可避免地涉及到可能不起作用的強制轉換-但除非在運行時失敗,否則不會警告您。 懷疑此方法的返回類型應該只是WSResponse ,但是您的問題還不夠清楚,我無法確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM