una son que programacion persona objetos objeto metodos los instanciar definir crear como clase java xml jaxb marshalling unmarshalling

son - que es instanciar una clase en java



Cómo alinear/deshacer los objetos Java con campos privados usando JAXB (2)

Deberías mantener tus campos privados en cualquier caso. Tienes 2 opciones vinculantes para los campos

1) anota tus campos con la anotación XmlElement o XmlAttribute

@XmlRootElement(name="book") public class Book { @XmlElement private String title; ...

2) anota tu clase con @XmlAccessorType (XmlAccessType.FIELD)

@XmlRootElement(name="book") @XmlAccessorType(XmlAccessType.FIELD) public class Book { private String title; ...

Conozco los conceptos básicos de la API de JAXB, pero estoy atrapado en algo que estoy tratando de hacer, y no estoy seguro de si realmente es posible. Los detalles son los siguientes:

Tengo una clase llamada Libro con 2 variables de instancia públicas de tipo String:

@XmlRootElement(name="book") public class Book { public String title; public String author; public Book() { } }

Tengo otra clase llamada Librería con 1 variable de instancia pública de tipo ArrayList:

@XmlRootElement(name="bookshop") public class Bookshop { @XmlElementWrapper(name="book_list") @XmlElement(name="book") public ArrayList<Book> bookList; public Bookshop() { this.bookList = new ArrayList<>(); } }

Nota: la declaración del paquete y las importaciones se eliminan para ahorrar espacio.

Estas dos clases funcionan y el XML de salida que obtengo es algo así como:

<bookshop> <book_list> <book> <title>Book 1</title> <author>Author 1</author> </book> <book> <title>Book 2</title> <author>Author 2</author> </book> </book_list> </bookshop>

Hasta donde yo sé, las variables de instancia deben declararse públicas para que su clase sea serializable. O bien, las variables de instancia pueden declararse privadas, pero en ese caso se necesitan acceso y mutadores.

No me gusta declarar públicas las variables de instancia; Me gusta usar accessors y mutators. Incluso entonces, quiero que algunos de mis campos sean de solo lectura, es decir, sin mutador. Pero parece que JAXB necesita tanto acceso como mutadores para cada campo que desea ordenar / desempatar. Me preguntaba si hay alguna forma de evitar esto.


JAXB necesitará: - Una variable de instancia pública. O - Una variable de instancia privada con mutadores y accionadores públicos.

Necesitará mutadores para la clasificación y acessors para unmarshalling