Enregistrez la méthode d'ensemble d'objets java DO et c'est la fosse de méthode! ! !
présentation de fond
Un objet DO ordinaire a généralement des méthodes set et get correspondantes, telles que la classe Student suivante :
public class Student {
protected String age;
protected String name;
protected String height;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Dépannage
Si dans la classe Student, ajoutez la méthode d'attribut correspondante, telle que isAge() :
Le code complet est le suivant :
```java
classe publique Étudiant {
protected String age;
protected String name;
protected String height;
public String getAge() {
return age;
}
public boolean isAge() {
return StringUtil.equalsIgnoreCase(age, "20");
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
# 原因分析
程序编译时出现的错误如下:
This breaks the JavaBeans specification and can cause unpredictable results.
legal overloaded getter method with ambiguous type for property age in class Student
因为isAge相当于getAge,导致JavaBean里面有两个getAge方法,违反了JavaBean的规范,需要干掉一个。
同时,也会带来另外一个问题,如使用:BeanUtils.describe方法转为map对象数据时候,会发现即使你在student对象传了String, 出来之后变成了boolean类型,有兴趣的读者可以自己试试。
```java
Student student = new Student();
student.setAge("12");
student.setName("hh");
Map<String, String> studentMap = BeanUtils.describe(student);
l'âge dans studentMap est vrai/faux. .
Cela montre que la méthode isAge() a une priorité plus élevée que la méthode getAge().