JAXBElement<T> делает объявленный тип T параметром для работы с любым классом
Я получил этот код
private Object fooMethod(Node node, Class classOut)
JAXBElement<MessageAcknowledgementType> root = unmarshallerjaxObject.unmarshal(node, MessageAcknowledgementType.class);
Так как я собираюсь вызывать fooMethod с разными именами классов, я хочу указать в JAXBElement имя класса из переменной classOut, я пробовал это, но это не работает:
JAXBElement <classOut.getSimpleName()> root = unmarshallerjaxObject.unmarshal(node, classOut.getSimpleName()); //It doesn't work
Любая идея о том, как указать имя класса в JAXBElement?. Спасибо!.
2 ответа
Решение
Самая простая вещь:
private Object fooMethod(Node node, Class<?> classOut) {
JAXBElement<?> root = unmarshallerjaxObject.unmarshal(node, classOut);
}
Как насчет этого:
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);