java bean 慎用 is開頭isXxx開頭的屬性,若必須得用,那么一定要記得 idea自動生成的 setter 和 getter會不標准,從而會引起問題,他自動生成后,需要手工再次進行修改,才可使用,要不然有可能引起各種問題


直接上例子:

 

 

然后用 Idea 自動生成 getter 和 setter 

public class XyzBean {

    //最普通的
    private String name;

    //Boolean類型,帶is前綴(3處都要手工修改成標准的,若不手工修改,自己看后果)
    private Boolean isHis;

    //Boolean類型,沒有is前綴(完全沒有問題)
    private Boolean noIs;

    //String類型,帶is前綴(完全沒有問題)
    private String isMan;

    //Long類型,帶is前綴,Integer一樣,不舉例了(完全沒有問題)
    private Long isLong;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    //方法名這里少了is,應該是getIsHis public Boolean getHis() { return isHis; } //方法名這里少了is, 應該是 setIsSuccess public void setHis(Boolean his) {//參數名,應該是 isHis //這里又少了this關鍵字,應該是 this.isHis = isHis; isHis = his; } public Boolean getNoIs() {
        return noIs;
    }

    public void setNoIs(Boolean noIs) {
        this.noIs = noIs;
    }

    public String getIsMan() {
        return isMan;
    }

    public void setIsMan(String isMan) {
        this.isMan = isMan;
    }

    public Long getIsLong() {
        return isLong;
    }

    public void setIsLong(Long isLong) {
        this.isLong = isLong;
    }
}

 

假如用這個 XyzBean 做返回,我們把它 序列化成 json看下 會是什么樣子的:

 

public class TestMain {
    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        XyzBean xyzBean = new XyzBean();
        xyzBean.setName("我操");
        xyzBean.setHis(true);
        xyzBean.setNoIs(false);
        xyzBean.setIsMan("yes");
        xyzBean.setIsLong(1L);
        System.out.println(objectMapper.writeValueAsString(xyzBean));
    }
}
{"name":"我操","noIs":false,"isMan":"yes","isLong":1,"his":true}//根本就不存在 his 屬性,我們都沒有定義,怎么出來一個 這個

問題就出來了,屬性名發生了變化,坑啊 草草草

解決方法,凡是 boolean 類型的 is開頭的 不用 idea 自動生成,或生成后 自己手工修改3個地方。

我們修改下,再測試:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM