要键入的Java字符串

时间:2011-08-03 19:43:21

标签: java

我定义了一个XML,它提供了序列化XML的有效负载路径。我想获取这些参数并创建一个对象并在类中调用方法。在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);
}

3 个答案:

答案 0 :(得分:0)

看一下reflection-api:

http://java.sun.com/developer/technicalArticles/ALT/Reflection/

“按名称调用方法”

答案 1 :(得分:0)

有很多工具可以帮到你。其中一个是Castor

答案 2 :(得分:0)

看起来你只需要调整使用反射API的调用。尝试

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

这假设c_payloadTypeClass<?>的实例,而qreq是您要传递给方法调用的参数。我不确定你写的JAXB代码是否构造了这两个对象。