idea會自動生成get/set方法的,
對於布爾類型,要非常注意生成的get方法,到底是is開頭還是get開頭.
先說結論:
1.Boolean類型,生成的get方法是get開頭的(建議使用這個).
2.boolean類型,生成的get方法是is開頭的(用這個最好重寫getXxx()格式的方法).
3、字段不要以isxxx命名,在springsimpleformController中獲取數據時候不能反射到該屬性,存數據時候也會遇到問題。具體問題以后遇到再補充。
以下這個例子,可以驗證這個區別:
class TestClass{ private Boolean daXie;//布爾的包裝類 private boolean xiaoXie;//基本類型-布爾 //下面是idea自動生成的get/set方法 //布爾包裝類Boolean的get方法,是正常的get開頭的 public Boolean getDaXie() { return daXie; } public void setDaXie(Boolean daXie) { this.daXie = daXie; } //請注意這里,基本類型boolean下自動生成的get方法,是is開頭的 public boolean isXiaoXie() { return xiaoXie; } public void setXiaoXie(boolean xiaoXie) { this.xiaoXie = xiaoXie; } }
從上面的例子可以看出,小寫的boolean基本類型作為類的屬性時,自動生成的get方法,是is開頭的,這樣在平時的使用中是無傷大雅的,但考慮到如果這個對象涉及到反射,反射一般會默認調取對象的get方法,對於這個is的情況,是走不通的.
總結:
用到布爾值的屬性時,最好統一使用大寫的包裝類Boolean.
如果用小寫的booean基本類型,最好重寫get方法,保證是getXxxx的格式即可.
擴展:
一般用到反射的地方有:
1.泛化調用(具體了解可參考dubbo框架)
2.BeanUtils.copyPropertits(a,b);