java返回集合為null還是空集合


個人認為在自己寫接口時,需要返回集合時返回一個空集合,比如mybatis查詢如果返回一個集合,結果為空時也會返回一個空集合而不是null。

 

那么這樣有什么好處呢?最大的好處就是調用方不用在判斷是否為null,可以直接用,因為不用拋空指針。

當然這也有缺點,如果返回Lists.newArrayList();或者new ArrayList();這會新建一個對象,而這個對象很可能是沒必要的,這樣白白浪費性能。

解決方法當然也有,可以用Collections.emptyList();這個方法返回一個空集合,並不會新建對象,而是返回

public static final List EMPTY_LIST = new EmptyList<>(); 

這個變量。

當然這也有缺點,如果調用方只是遍歷,這沒什么不會報錯,但是如果要新增,刪除里面的元素那就會報錯,

那么你可能想為什么,原因就是代碼里直接寫死了調用時報錯,那么為什么要這樣寫呢?

原因也很簡單,如果多個線程對這個集合增刪,那么調用方就全亂了,所以采用了直接報錯,快速失敗的方法

來解決問題。

總結:

返回null,返回new ArrayList<>(),返回EMPTY_LIST 。

null肯定是不推薦的,那么是新建一個List還是返回空List呢?

這要根據接口的性能要求,如果性能要求高返回EMPTY_LIST,否則新建一個對象。


免責聲明!

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



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