Как изменить BeanInfo класса (сгенерированного jaxb xjc)?

Я создал несколько классов, используя JAXB XJC. Они следуют этому шаблону (некоторые свойства с геттерами и сеттерами и аннотациями xml):

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "School", propOrder = {
    "info",
    "students"
})
public class School {

    @XmlElement(name = "Info", required = true)
    protected Info info;

    @XmlElement(name = "Students", required = true)
    protected List<Student> students;

    public Info getInfo(){ return info;}

    public void setInfo(Info value){ info = value};

    public List<Students> getStudents(){ 
       if (students == null) {
            students = new ArrayList<Student>();
        }
       return students;
    }

    public void setStudents(List<Student> elements){
       if (students == null) {
            students = new ArrayList<Student>();
        }
       students.addAll(elements);
    } 

Когда я использую java.beans.Introspector.getBeanInfo а также BeanInfo.getPropertyDescriptors чтобы получить класс BeanInfo, я вижу, что мой School класс имеет свойство, называемое students с WriteMethod будучи setStudents(List). Я считаю, что BeanInfo этого класса был сгенерирован в соответствии с правилами Bean по умолчанию, согласно спецификации Java Beans:

Если мы обнаружим подходящую пару get<PropertyName> а также set<PropertyName> методы, которые принимают и возвращают один и тот же тип, то мы рассматриваем эти методы как определение свойства чтения-записи, имя которого будет <propertyName>.

Итак, как я могу изменить BeanInfo этого класса? Точнее, я хочу установитьWriteMethod собственности students быть другим методом, который не следует правилу по умолчанию, упомянутому выше (это было бы public void setStudent (Student student){...}). Как я могу это сделать?

Только для того, чтобы было понятно... Когда я использую java.beans.Introspector.getBeanInfo а также BeanInfo.getPropertyDescriptorsчтобы получить класс BeanInfo, я хочу увидеть, что мойSchoolкласс имеет свойство students с WriteMethodбыть мой новый комплект метод (setStudents(Student) это не соответствует правилу по умолчанию).

Я кое-что видел здесь, но мне этого мало...

Спасибо!

0 ответов

Другие вопросы по тегам