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);
Другие вопросы по тегам