Ci sono alcuni casi d'uso in cui un JAXBElement è richiesto:
- Un elemento è sia
nillable="true"eminOccurs="0". In questo caso cosa significanullsul campo mappato/proprietà significa? Quando la proprietà èJAXBElementun valore nullo significa che l'elemento non è presente e unJAXBElementwrapping null significa un elemento XML conxsi:nil="true". - Ci sono 2 elementi globali con lo stesso tipo complesso denominato. Poiché in JAXB le classi corrispondono a tipi complessi è necessario un modo per catturare quale elemento radice è stato incontrato. Per maggiori dettagli, vedere questo articolo ho scritto.
- Esiste una struttura di scelta in cui
fooobarpossono verificarsi elementi e sono dello stesso tipo. Qui unJAXBElementè richiesto perché incontra semplicemente unaStringil valore non è sufficiente per indicare quale elemento deve essere sottoposto a marshalling. - Un elemento con
xsi:nilsi incontra nel documento che contiene gli attributi. In questo esempio l'oggetto corrispondente a quell'elemento può ancora essere deselezionato per contenere i valori degli attributi, ma JAXBElement può comunque indicare che l'elemento era nullo.