返回零長度的陣列或者集合,而不是null

2021-07-03 22:53:00 字數 724 閱讀 5825

<> 第四十三條:返回零長度的陣列或者集合,而不是null 

如果乙個方法的返回值型別是集合或者陣列 ,如果在方法內部需要返回的集合或者陣列是零長度的,也就是沒有實際物件在裡面,

我們也應該放回乙個零長度的陣列或者集合,而不是返回null。如果返回了null,客戶端程式員就要檢測返回的是不是null,然後才能

進行下一步操作,否則就會引發nullpointexception。但是如果是返回的的是空陣列或者集合,就不會再後續的使用這個物件上,引發

空指標異常,我們可以根據**的行為和表現,來判斷陣列和集合是不是為空。

在collections中有專門針對list,set,map的空的實現。如:

collections.emptylist()

collections.emptyset();

collections.emptymap();

在返回這些集合的方法中,盡量不要返回空值,避免nullpointerexception。而就盡量返回非空值,這時候上面

所示的三個空(不是null)集合就有用武之地了,可以使用它們。

如在某方法中這樣做:

publci listgetinterests()

return interests;    

}同理,針對需要返回陣列的方法,也沒必要返回空陣列。可以用new int[0]之類的長度為0的陣列的來替代。這樣也可以避免返回空值。

返回字串的方法是不是也應該返回乙個空串呢?

建議 返回零長度的陣列或者集合,而不是null。

有時候會有人認為 null返回值比零長度陣列或者集合的方法,幾乎每次用到該方法時都需要這種曲折的處理方式。這樣做很容易出錯,因為編寫客戶端程式的程式設計師可能會忘記寫這種專門的 來處理null返回值。這樣的錯誤也許幾年都不會被注意到,因為這樣的方法通常返回乙個或者多個物件。返回null而不是零長度的...

第43條 返回零長度的陣列或者集合,而不是null

private final listcheesesinstock public cheese getcheese 如果返回null,在客戶端處理 就需要有額外的 來處理null返回值 cheese cheeses shop.getcheeses if cheeses null arrays.asli...

零長度陣列

零長度陣列 神奇的int reserve 0 include include struct device 構題 device 之後 這種宣告方法可以巧妙的實現c語 言裡的陣列擴充套件 int main a.out p dev reserve 0 100 p dev reserve 24 0 size...