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

2022-08-29 00:24:37 字數 710 閱讀 1020

private

final listcheesesinstock =...;

public

cheese getcheese()

如果返回null,

在客戶端處理**就需要有額外的**來處理null返回值:

cheese cheeses =shop.getcheeses();

if(cheeses != null &&arrays.aslist(cheese).contains(cheese.stilton))

system.out.println("jolly good");

}

而不是:

cheese cheeses =shop.getcheeses();

if( arrays.aslist(cheese).contains(cheese.stilton))

system.out.println("jolly good");

}

認為null返回值比零長度陣列更好,因為避免了分配陣列所需要的開銷,是不對的。

1.除非分析表明這是方法的確影響了效能

2.對於不返回任何型別呼叫,返回同乙個零長度陣列是可能的

collections類提供當需要空集合時都返回同乙個不可變的空集合的方法:

public listgetcheeselist()

零長度陣列

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

零長度陣列

最近在準備分析linux input子系統,發現核心 裡面有很多小技巧。特此記錄下,如有不足之處,敬請指正。在日常的程式設計中,有時候需要在結構體中存放乙個長度動態的字串,比如說,我們要在結構體中存放乙個名字,但是這個名字的長度是未知的。於是,我們就會採用以下兩種方法來解決這個問題。注 以下的 都是...

零長度陣列

適用於c語言變長陣列 在實際的程式設計中,我們經常需要使用變長陣列,但是c語言並不支援變長的陣列。此時,我們可以使用結構體的方法實現c語言變長陣列。struct mydata 在結構中,data是乙個陣列名 但該陣列沒有元素 該陣列的真實位址緊隨結構體mydata之後,而這個位址就是結構體後面資料的...