JAXBElement <t>将声明的类型T作​​为参数来处理任何类</t>

时间:2012-07-19 10:45:37

标签: java jaxb classname

我收到了这段代码

private Object fooMethod(Node node, Class classOut)
  JAXBElement<MessageAcknowledgementType> root = unmarshallerjaxObject.unmarshal(node, MessageAcknowledgementType.class);

由于我要用不同的类名调用fooMethod,我想从变量classOut中指定JAXBElement类的名称,我试过这个但它不起作用:

JAXBElement <classOut.getSimpleName()> root = unmarshallerjaxObject.unmarshal(node, classOut.getSimpleName()); //It doesn't work

有关如何在JAXBElement中指定类名的任何想法吗?谢谢!。

2 个答案:

答案 0 :(得分:2)

最简单的事情是:

private Object fooMethod(Node node, Class<?> classOut) {
    JAXBElement<?> root = unmarshallerjaxObject.unmarshal(node, classOut);
}

答案 1 :(得分:1)

这个怎么样:

Object obj = fooMethod(node, classout);

定义另一种方法,将其转换为适合您的类型:

private <T> JAXBElement<T> getCast(Class<T> clazz, Object obj){
    return (JAXBElement<T>)obj;
}

     JAXBElement<Member> jaxbElement = getCast(SomeClass.class, obj);