簡體   English   中英

如何在Java運行時執行typecastng?

[英]how to perform typecastng at runtime in java?

我試圖為通過REST公開的服務創建客戶端。我有多個類擴展了一個類。

現在,當我發送請求並獲得響應時,每次我都需要鍵入將響應轉換為特定類。我正在嘗試使該過程自動化,這可以在運行時實現嗎?

我正在考慮使用泛型和反射,但無法前進。我真正想要實現的是僅提及一個唯一的字符串或說請求,我必須能夠獲得完全相同的響應,而無需使用該特定響應類進行類型轉換。

通過使用泛型,我成功地減少了一些用於類型轉換的代碼,但仍然不滿意,因為我想在運行時完全實現它。

RequestClass request=(RequestClass)getRequest(some attributes);
output=(Responseclass)response.getResult();

這里每次我需要提及請求和響應類時,我都不想這樣做。

我可以做些我可以將請求和響應類映射到鍵或字符串的事情嗎,並基於此代碼將獲取請求和響應類並根據它執行操作(不確定)。

請引導我執行此操作,或者以其他任何方式可以執行上述操作。 提前致謝。

考慮使用許多Java REST庫之一。 我們的客戶使用Jersey API處理對基於Python的RESTful服務器的請求和響應。

澤西島使用稱為ClientResponse的類來存儲常規響應數據。 您可以使用getEntity方法將響應作為特定類型返回。

這是我的代碼的摘錄,它僅處理字符串,但是您可以看到如何擴展它:

    ClientResponse response; //a Jersey class
    String responseText;
    WebResource odbc = resourceCollection.path("ODBC"); //another Jersey class
    try {
        //we send a POST and get a response stored as generic
        response = odbc.type(media)
                .accept(MediaType.APPLICATION_XML,MediaType.TEXT_PLAIN)
                .post(ClientResponse.class, formdata);
        //we pull out the response entity as a string
        responseText = response.getEntity(String.class);
    } catch (UniformInterfaceException e) {
        write("<UniformInterfaceException>\n");
        write("  Response type was not expected\n");
        write("</UniformInterfaceException>\n");
        return;         
    } catch (ClientHandlerException e) {
        write("<Error>\n");
        write("  Unable to connect or connection refused\n");
        write("</Error>\n");
        return;
public class DynamicCasting{
    DynamicCasting e1=new DynamicCasting();
    private Object obj=new Object();
    DynamicCasting.doSomething(obj);
    public static DynamicClass doSomething(DynamicClass dynClassObject){
        return dynClassObject;
    }
}

The obj will be type casted to DynamicClass in this example.

暫無
暫無

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

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