2017-09-24 70 views
-1

我只是有一個關於方法返回類型中的代碼可重用性的問題。Java方法返回類型,預定義的Collection vs Collector?

在Java 8中,收集器的概念是用戶將指定流將返回的集合的類型。

如果基本檢索方法接受收集器參數而不是返回預定義的集合,比如列表,它會有好處。

具有預定義集合的方法會將Collectors.toList()傳遞給基本檢索方法。

+0

在某些情況下,是的。在其他沒有。你真的在這裏問什麼? (你是什麼意思的「靜態集合」?你的意思是具有特定實現類的對象?通過靜態共享對象的引用?) –

+0

Hi @Stephen C,我將靜態更改爲預定義,我的意思是而不是聲明方法將返回列表,類型將取決於收集器通過:) – Hans

+2

您的問題很難理解。你認爲什麼是「基本檢索方法」? – Misha

回答

0

因爲java.util.stream.Stream提供了您所描述的功能,還有什麼理由對任何其他類做同樣的:而不是採取一個Collector,收集流了進去,並返回結果,它更有道理,只是回報流開始:它更清晰,並且它給予調用者更多的靈活性,而不僅僅是集合類型的選擇。

也就是說,在大多數情況下,您最好只返回一個適當的集合類型。與客戶相比,您通常比您的客戶更清楚哪些集合類型對於給定的API有意義,而且您的客戶通常不會那麼在意,除非有某些原因他們希望事後改變集合。如果你只是返回一個Stream,那麼你就不會給你的客戶提供什麼期望的信息(除非你通過把信息放入Javadoc來補償它,然後他們必須閱讀和理解)。

+0

我想在問這個問題之前我應該​​仔細考慮一下。這是一個案件的基礎。 – Hans