1. 程式人生 > 其它 >為什麼boolean 型別的欄位不建議使用is開頭?

為什麼boolean 型別的欄位不建議使用is開頭?


對於非boolean型別的引數,getter和setter方法命名的規範是以get和set開頭 對於boolean型別的引數,setter方法是以set開頭,但是getter方法命名的規範是以is開頭 包裝類自動生成的getter和setter方法的名稱都是getXXX()和setXXX()

1.其實javaBeans規範中對這些均有相應的規定,基本資料型別的屬性,其getter和setter方法是getXXX()和setXXX,但是對於基本資料中布林型別的資料,又有一套規定,其getter和setter方法是isXXX()和setXXX。但是包裝型別都是以get開頭

2.這種方式在某些時候是可以正常執行的,但是在一些rpc框架裡面,當反向解析讀取到isSuccess()方法的時候,rpc框架會“以為”其對應的屬性值是success,而實際上其對應的屬性值是isSuccess,導致屬性值獲取不到,從而丟擲異常。

總結

1、boolean型別的屬性值不建議設定為is開頭,否則會引起rpc框架的序列化異常。

2、如果強行將IDE自動生成的isSuccess()方法修改成getSuccess(),也能獲取到Success屬性值,若兩者並存,則之後通過getSuccess()方法獲取Success屬性值。