1.背景
在某些狀況下,咱們常常須要發揮一個空的集合對象,好比說在數據查詢時,並不須要發揮一個NULL或是異常,那麼就能夠返回一個空的集合對象。
JDK提供了兩個方式來返回集合對象,那麼二者有何區別呢?那就看代碼吧!
2.源碼解析spa
[Java] 純文本查看 複製代碼code
?對象
1ci 2get 3編譯器 4源碼 5io 6編譯 7table |
|
從上面咱們能夠看出,emptyList不過是對EMPTY_LIST作了一個泛型支持。這點上咱們就能夠很清晰的瞭解二者不一樣的使用場景了!如果不須要泛型的狀況,能夠直接使用Collections,反之則使用emptyList().
3.使用
對於EMPTY_LIST就很少介紹了,咱們能夠直接使用Collections.EMPTY_LIST。
對於Collections.emptyList()的使用有點須要注意的地方。
如果定義了一個變量來保存這個空集合的話,那麼沒有問題。
[Java] 純文本查看 複製代碼
1 |
|
如果在某個場景下須要將空對象進行賦值那麼就須要以下寫法
organization.setPersonList(Collections.<Person> emptyList());
4.BTW
雖然在源碼中存在
[Java] 純文本查看 複製代碼
1 2 3 4 5 |
|
可是對於咱們不管是
for (int i =0 ; i < ...)仍是 for (Person p : personList)都不會調用到get(int index)這個方法,能夠放心使用!前一種方式咱們能夠很好理解,由於首先是調用了size().後者foreach的實現原理還須要考究下!
5.Note
EmptyList是空的集合,不能進行add等操做。