Я создал несколько классов, используя JAXB XJ C. Они следуют этому шаблону (некоторые свойства с геттерами и сеттерами и аннотациями 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
class имеет свойство под названием 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 , я хочу видеть , что мой * Класс 1030 * имеет свойство students
, причем WriteMethod
является моим новым методом набора (setStudents(Student)
, который не соответствует правилу по умолчанию).
Я кое-что видел здесь , но мне этого было мало ...
Спасибо!