Как изменить 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)
это не соответствует правилу по умолчанию).
Я кое-что видел здесь, но мне этого мало...
Спасибо!