Enregistrer la méthode d'ensemble d'objets java DO et la fosse de méthode

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().

Guess you like

Origin blog.csdn.net/qq_39463175/article/details/130856804