Объявление JAXBElement

#java #xml #jaxb

#java #xml #jaxb

Вопрос:

Я сгенерировал классы из своего XML .xsd и пытаюсь установить поле EndpointID внутри класса MeterSessionInputRF . Проблема, с которой я сталкиваюсь, заключается в том, что setEndpointID метод принимает только JAXBElement<Byte> в качестве своего параметра.

В настоящее время я запрашиваю базу данных, чтобы получить входные данные для setEndpointID метода. Этот ввод может быть строкой, символом, каким бы я ни хотел, чтобы это было.

Как мне создать JAXBElement<Byte> ? Я пытался использовать класс ObjectFactory, но когда я пытаюсь его использовать, у меня нет возможности создать такой объект.

Вот код, который я уже должен дать некоторую перспективу.

 if(moduleResults.next()){
    MeterSessionInputRF msiRF = new MeterSessionInputRF();
    msiRF.setRFFrequency(moduleResults.getFloat("id_amr_module"));
    JAXBElement<Byte> endpointType;
    byte epT = moduleResults.getByte("cd_module_typ");
    endpointType.setValue(epT);
    msiRF.setEndpointType(endpointType);
}
 

Я продолжаю получать сообщение об ошибке, что endpointType, возможно, не был инициализирован. Есть ли правильный способ создать JAXBElement<Byte> ?

Комментарии:

1. Спасибо. Это было под createMeterSessionInputRFEndpointType . Так трудно найти!

Ответ №1:

ObjectFactory Класс, созданный XJC, должен иметь метод, позволяющий сделать это за вас. Я знаю, вы сказали, что его там нет, но проверьте еще раз, должен быть какой-то метод, который возвращает объект этого типа.