【Java學習筆記之八】JavaBean中布爾類型使用注意事項


JavaBean是一個標准,遵循標准的Bean是一個帶有屬性和getters/setters方法的Java類。

JavaBean的定義很簡單,但是還有有一些地方需要注意,例如Bean中含有boolean類型的屬性。我們知道對於一個屬性來說,如果其命名為test,那么其getter和setter方法一般為getTest()和setTest。但是如果test為一個布爾類型,那么其getter和setter方法為isTest()和setTest()。這是一個區別

復制代碼
 1 public class BeanTest {  2 private boolean test;  3  4 public boolean isTest() {  5 return test;  6  }  7  8 public void setTest(boolean test) {  9 this.test = test; 10  } 11 }
復制代碼

如果我們將這個屬性名換為isTest,那么其生成的getter和setter方法,居然和屬性為test時的一樣

復制代碼
 1 public class BeanTest1 {  2 private boolean isTest;  3  4 public boolean isTest() {  5 return isTest;  6  }  7  8 public void setTest(boolean test) {  9 isTest = test; 10  } 11 }
復制代碼

這個區別在一般的情況下是沒有影響的,但是如果涉及到和json串之間的轉換,就得注意了。例如,如果我將上面的兩個Bean的對象Json化,其結果居然是一樣的

復制代碼
1 public static void main(String[] args) { 2 System.out.println(JSON.toJSONString(new Bean1())); //{"test":false} 3 System.out.println(JSON.toJSONString(new Bean2())); //{"test":false} 4 }
復制代碼

如果,我想要生成{“isTest”:false}這樣的Json串,那么我們的Bean該怎么定義呢?這時候我們不該依賴於IDEA自動幫我們生成,我們必須手動編寫:

復制代碼
 1 public class Bean3{  2 private boolean isTest;  3  4 public boolean getIsTest(){  5 return isTest;  6  }  7 public void setIsTest(boolean isTest){  8 this.isTest = isTest;  9  } 10 }
復制代碼

雖然這樣生成了我們想要的json串,但是這樣沒有遵循Java規范,感覺很別扭。。。。我們可以使用@JSONField來指定json化后對應的字段名

另外,如果屬性是boolean的包裝類型Boolean,那么JavaBean定義的getter和setter方法又為什么呢?

復制代碼
 1 public class Bean4{  2 private Boolean test;  3  4 public Boolean getTest() {  5 return test;  6  }  7  8 public void setTest(Boolean test) {  9 this.test = test; 10  } 11 } 12 13 public class Bean5{ 14 private Boolean isTest; 15 16 public Boolean getTest() { 17 return isTest; 18  } 19 20 public void setTest(Boolean test) { 21 isTest = test; 22  } 23 }
復制代碼

我們發現Boolean類型和boolean類型屬性的get和set方法也是有差別的。

總的來說,為了避免麻煩,不管是定義Boolean類型的屬性,還是定義boolean類型的屬性,其字段名不要使用isXXX這種方式,然后按照Bean規范生成get和set方法就好了

 

 


免責聲明!

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



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