JAXB und Konstruktoren
Fange ich lernen, JAXB, also meine Frage kann sehr albern. Jetzt habe ich Klassen und wollen generieren von XML-Schema. Nach gehen diese Anweisung, die ich bekommen Ausnahme
IllegalAnnotationExceptions ... nicht ein no-arg-Standard
Konstruktor.
Yeah. Meine Klassen noch nicht Standard no-arg-Konstruktoren. Es ist zu einfach. Ich habe Klassen mit package-sichtbaren Konstruktoren - /final-Methoden und natürlich mit Argumenten. Was soll ich tun - einige spezifische momemto/builder-Klassen, oder geben Sie, meine Konstrukteure, um JAXB (in welcher Weise?) ? Danke.
InformationsquelleAutor der Frage Stan Kurilin | 2010-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
JAXB unterstützen kann diesem Fall mithilfe einer XML-Adapter. Betrachten Sie das folgende Objekt ohne null-arg-Konstruktor:
Müssen Sie einfach erstellen Sie eine abbildbar version dieser Klasse:
- Und eine XML-Adapter konvertieren zwischen Ihnen:
Dann für Eigenschaften, die sich auf die Customer-Klasse verwenden Sie einfach die @XmlJavaTypeAdapter Anmerkung:
Für ein detailliertes Beispiel finden Sie unter:
InformationsquelleAutor der Antwort Blaise Doughan
Können Sie die annotation
@XmlType
und verwenden factoryMethod /factoryClass Attribute in verschiedenen Kombinationen wie:Überraschend das funktioniert und Sie bekommen eine initialisierte Instanz beim unmarshalling. Sie sollten beachten nicht zu nennen, die
newInstance
Methode überall auf Ihrem code, wie wird es wieder eine ungültige Instanz.InformationsquelleAutor der Antwort Rafael M
Sollten Sie einen default-Konstruktor für JAXB zu können, instanziieren von Klassen. Vielleicht gibt es einen workaround, ich weiß nicht, obwohl.
JAXB ist besonders ausgestattet für bean-wie Klassen, wodurch Sie zum konfigurieren der Objekte, durch Aufruf von setter auf Sie.
InformationsquelleAutor der Antwort Guillaume
JAXB neu erstellt Bohnen von XML auf einfache Art und Weise : es wird eine neue Instanz der bean, und dann alle die
setXXX
benötigt, um die Attribute. Also, wenn deine Bohne nicht ein no-args-Konstruktor, JAXB kann nicht erstellen Sie es. Wie gesagt in anderen Antworten, JAXB funktioniert besser für einfache "container" - Bohnen, die für die no-args-Konstruktor ist nicht wirklich ein problem. Wenn Sie versuchen, zu erstellen, Bohnen, müssen bestimmte Initialisierung, werden Sie brauchen, um es in diesetXXX
Methoden.InformationsquelleAutor der Antwort Valentin Rocher