Existem alguns casos de uso em que um
JAXBElement É necessário:- Um elemento é tanto
nillable="true"eminOccurs="0". Neste caso, o quenullna média do campo/propriedade mapeada? Quando a propriedade éJAXBElementum valor nulo significa que o elemento não está presente e umJAXBElementenvolver nulo significa um elemento XML comxsi:nil="true". - Existem 2 elementos globais com o mesmo tipo complexo nomeado. Como as classes JAXB correspondem a tipos complexos, é necessário capturar qual elemento raiz foi encontrado. Para obter mais detalhes, consulte este artigo Eu escrevi.
- Há uma estrutura de escolha em que
foooubarelementos podem ocorrer e eles são do mesmo tipo. Aqui umJAXBElementé necessário porque simplesmente encontrar umaStringvalue não é suficiente para indicar qual elemento deve ser empacotado. - Um elemento com
xsi:nilé encontrado no documento que contém atributos. Neste exemplo, o objeto correspondente a esse elemento ainda pode ser desempacotado para conter os valores de atributo, mas JAXBElement ainda pode indicar que o elemento era nulo.