第十二篇:隨手記一下javaBean的setter,getter方法的命名問題


今天測試新寫的一個系統表的完整Ibatis配置和調用,因為經驗少,到處撞牆、、、其他的坑爹問題就不提了

       測試sqlMapClient.queryForList("...",param)這個方法,查詢正常有3條記錄,但是結果卻是[{},{},{}],很明顯里面的3個實體對象全是空的,就是說查出來的結果沒有set進去。大多數情況遇到的實體類的屬性名都是name,passWord這樣的,所以setter、getter方法自然就叫getName(),setName(),這次我的實體類屬性是這樣的:

private String sysId;
private String sysName;
private String sysAlias;
private String paramValue;
private Date createTime;

寫的 setter、getter方法名字叫
public String getsysId(){
return sysId;
}
public void setsysId(String sysId){
this.sysId = sysId;
}

        我在手寫這兩個方法的時候心里老感覺這名字怪怪的,看起來很不舒服,因為之前一直用駝峰命名法看習慣了。只知道是set、get加上屬性名就OK了。於是猜測是不是取名問題。既然java中確實有setter、getter方法這種叫法,那也該有個規則。網上查了下遇到這個問題的帖子挺少。要么我做的少了,要么大家都是用代碼生成器吧。

       這個碰壁很值,不廢話,下面給出命名規則
 

        一般JavaBean屬性以小寫字母開頭,駝峰命名格式,相應的 getter/setter 方法是 get/set 接上首字母大寫的屬性名。例如:屬性名為userName,其對應的getter/setter 方法是 getUserName/setUserName。

        但是,還有一些特殊情況:

1、如果屬性名的第二個字母大寫,那么該屬性名直接用作 getter/setter 方法中 get/set 的后部分,就是說大小寫不變。例如屬性名為uName,方法是getuName/setuName。

2、如果屬性名的前兩個字母是大寫(一般的專有名詞和縮略詞都會大寫),也是屬性名直接用作 getter/setter 方法中 get/set 的后部分。例如屬性名為URL,方法是getURL/setURL。

3、如果屬性名的首字母大寫,也是屬性名直接用作 getter/setter 方法中 get/set 的后部分。例如屬性名為Name,方法是getName/setName,這種是最糟糕的情況,會找不到屬性出錯,因為默認的屬性名是name。

4、如果屬性名以"is"開頭,則getter方法會省掉get,set方法會去掉is。例如屬性名為isOK,方法是isOK/setOK。

需要注意的是有些開發工具自動生成的getter/setter方法,並沒有考慮到上面所說的特例情況,會導致bug的產生。
        結論來了:在定義JavaBean的屬性名時
1、盡量避免屬性名的頭兩個字母中任意一個為大寫
2、盡量避免屬性名以"is"開頭。


免責聲明!

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



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