2011-08-03 17 views
0

シリアル化されたXMLにペイロードパスを提供するXMLが定義されています。これらのパラメータを取得してオブジェクトを作成し、クラス内のメソッドを呼びたいと思います。 Javaでこれを行うための最良の方法は何ですか?Java String to Type

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

あなたのためにこれを行います多くのツールがあります。それらの1つはCastorです。

0

反射APIを使用する呼び出しを調整する必要があるようです。これはc_payloadTypeClass<?>qreqのインスタンスを使用して、メソッド呼び出しに渡す引数がされていることを前提としてい

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

試してみてください。あなたが書いたJAXBコードがこれらの2つのオブジェクトを正しく構築するかどうかはわかりません。