6
A
回答
5
對於像List或ArrayList類型不應該有任何compilcation和你應該返回列表促進Code to an interface。
你會發現你的自我限制這樣做,如果這是來自併發包,如CopyOnWriteArrayList,並且你正在使用的方法如addIfAbsent這是List接口中未定義的方法。
因此,如果您返回的ArrayList或者未在合同(List
接口)定義這個問題,你可以使用API的任何具體實現,但你是從具體實現量變到質變到別的(東西從ArrayList
到LinkedList
限制),因爲每個使用你的API的人都必須根據你的改變進行改變,所以我期望的太多了。
4
這意味着你不會爲返回的對象調用不是List方法的ArrayList方法。
但是,如果對象是一個ArrayList,你可以做一個強制轉換。
2
返回具體類的唯一原因可能是如果調用者需要了解具體的實現,或者可能需要了解具體實現的其他接口。例如,在Android中,您經常需要使用ArrayList,因爲框架不知道如何正確序列化通用列表接口。
15
最好是返回適合您界面的最通用的類型。
如果出於某種原因,爲什麼ArrayList固有地適合您要返回的數據,那麼您應該使用它。通常列表是不錯,但你也可以考慮使用集合如果返回的值是固有無序:
相關問題
- 1. 我應該將IList還是List返回給MVC中的控制器?
- 2. 我應該實現List接口還是擴展Java中的ArrayList類
- 3. 我應該返回一個空列表還是空列表?
- 4. 定義API時我應該返回CompletableFuture還是Future?
- 5. 我應該返回null還是拋出異常?
- 6. win32消息循環 - 我應該打破還是返回?
- 7. 我應該返回一個引用還是散列?
- 8. 在CQRS中,我的閱讀方應該返回DTO還是ViewModels?
- 9. 我應該使用shared_ptr還是返回unique_ptr.get()?
- 10. 我應該返回值還是使用void?
- 11. 我應該返回501/505 HTTP狀態還是400/404
- 12. 我應該使用list()還是用括號括起來?
- 13. 我應該使用std :: list還是有更好的方法?
- 14. 我應該使用HashMap,List還是其他?
- 15. 我應該使用回調還是應該重寫屬性?
- 16. 我應該存儲Arraylist還是擴展它?
- 17. 我應該使用Unit還是捨棄我的Scala方法的返回類型?
- 18. 應該IDataErrorInfo.Error返回所有錯誤還是僅返回屬性級錯誤?
- 19. 這個Json結果應該返回一個404還是200?
- 20. 返回語句應該在鎖內還是外?
- 21. 函數應該打印一個字符串還是返回它?
- 22. 多態性:爲什麼使用「List list = new ArrayList」而不是「ArrayList list = new ArrayList」?
- 23. 在異步方法結束時,我應該返回還是等待?
- 24. 我應該使用模板還是在jQuery AJAX中返回完整的代碼?
- 25. NSCopying和copyWithZone: - 他們應該返回[自我保留]還是其他?
- 26. 使用Restlet - 我應該返回Bean表示還是字符串表示?
- 27. 我應該通過值還是通過r值參考捕獲返回值?
- 28. 我應該從函數中返回一個數組還是一個集合?
- 29. 我的幫助器方法應該返回一個字符還是字符串?
- 30. 我的持久化類應該返回Option還是依賴於異常?
+1的圖片:) – 2012-04-26 07:14:09
謝謝你的圖 – 2012-04-26 09:05:29