[英]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.