/* package whatever; // don't place package name! */
/* package whatever; // don't place package name! */
import java.io.File;
import java.util.ArrayList;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import java.util.ArrayList;
class Ideone {
public static void main
(String[] args
) { try {
Department department = new Department();
FactoryWorker factoryWorker = new FactoryWorker();
factoryWorker.
setId(Long.
valueOf(999)); factoryWorker.setWorksNights(true);
department.setEmployee(factoryWorker);
JAXBContext jaxBContext = JAXBContext.newInstance(Department.class);
Marshaller jaxbMarshaller = jaxBContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.
marshal(department,
System.
out); e.printStackTrace();
}
}
}
@XmlRootElement(name="Department")
class Department {
public Department() {}
@XmlElements({
@XmlElement(name="Manager", type=Manager.class),
@XmlElement(name="FactoryWorker", type=FactoryWorker.class)
})
private Employee employee;
public void setEmployee(Employee val) {this.employee = val;}
}
class Employee {
public Employee() {}
public Long getId
(){return this.
id;} public void setId
(Long val
) {this.
id = val
;}
}
class Manager extends Employee{
public Manager() {}
public Integer getNumberOfProjects
() {return this.
numberOfProjects;} public void setNumberOfProjects
(Integer val
) {this.
numberOfProjects = val
;}
}
class FactoryWorker extends Employee{
public FactoryWorker() {}
public Boolean getWorksNights
(){return this.
worksNights;} public void setWorksNights
(Boolean val
) {this.
worksNights = val
;} }