Pourquoi et quand JAXBElement est nécessaire dans JAXB?

J'apprends juste JAXB (Java Architecture for XML Binding). La lecture par le biais de quelques sources , le doute est venu dans mon esprit à l'égard de JAXBElement.

Oracle docs disent:

When XML element information can not be inferred by the derived Java representation of the XML content, a JAXBElement object is provided. This object has methods for getting and setting the object name and object value. Lien ici

signifie que JAXBElement doit être utilisée lorsqu'il n'est pas une correspondance directe entre le Schéma défini le type de données et Java de type de données?

De plus, Dans un des exemples de code répertorié sous. que j'ai suivi de ici :

 ObjectFactory factory = new ObjectFactory();

    UserT user = factory.createUserT();
    user.setUserName("Sanaulla");
    ItemT item = factory.createItemT();
    item.setItemName("Seagate External HDD");
    item.setPurchasedOn("August 24, 2010");
    item.setAmount(new BigDecimal("6776.5"));

    ItemListT itemList = factory.createItemListT();
    itemList.getItem().add(item);

    ExpenseT expense = factory.createExpenseT();//we get expense object here
    expense.setUser(user);
    expense.setItems(itemList);

    JAXBContext context = JAXBContext.newInstance("generated");
    JAXBElement<ExpenseT> element = factory.createExpenseReport(expense);//why is this required
    Marshaller marshaller = context.createMarshaller();
    marshaller.setProperty("jaxb.formatted.output",Boolean.TRUE);
    marshaller.marshal(element,System.out);

À l'aide de ExpenseT expense = factory.createExpenseT(); nous sommes en mesure d'obtenir ExpenseT objet.

De nouveau dans le code, si nous le voyons ,nous créons

JAXBElement<ExpenseT> element = factory.createExpenseReport(expense);
qui, selon cette source est un wrapper pour expense objet.
D'autre part, nous ne créons pas des wrappers pour les objets récupérés en utilisant l'
UserT user = factory.createUserT();

Donc mes questions sont :

  1. Quel est le besoin de JAXBElement wrapper autour de expense ?
  2. quand utiliser JAXBElement ?
InformationsquelleAutor Aman Arora | 2013-12-05