2011-08-03 31 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代码是否正确构造了这两个对象。