2011-08-03 38 views
0

我有一個XML定義,它提供了一個序列化XML的有效載荷路徑。我想採用這些參數並創建一個對象並在類中調用一個方法。在Java中執行此操作的最佳方法是什麼?Java字符串到類型

XML 
<RequestObjectType>com.test.model.QueryType</RequestObjectType> 
<Class>com.test.api.Query</Class> 
<Method>generalQuery</Method> 


public void callRequestViaObj(String payloadXML, String payloadType, String api_className, String method){ 
    Class c_payloadType = Class.forName(payloadType); 
    Class c_apiClass = Class.forName(api_className); 
    JAXBElement<c_payloadType> elemreq = (JAXBElement<c_payloadType>) JaxbUtils.XMLtoObj(payloadXML, JAXBContext.newInstance(c_payloadType)); 
    c_payloadType qreq = (c_payloadType) (elemreq.getValue()); 

    //Would like to do something like this... 
    c_payloadType.newInstance().callMethod(method).with(qreq); 
} 

回答

0

有許多工具,會爲你做到這一點。其中之一是Castor

0

看起來你只需要調整使用反射API的調用。嘗試

c_payloadType.newInstance().getMethod(method, qreq.getClass()).invoke(qreq); 

這假定c_payloadTypeClass<?>qreq一個實例是要傳遞給方法調用的參數。我不確定你寫的JAXB代碼是否正確構造了這兩個對象。