2015-03-02 31 views
7

返回流的方法是否存在命名約定? 我唯一發現的是answer on S.O(最後一段),但我不明白它是基於什麼。返回流的命名java方法

+1

它基於現有代碼中已經很明顯的內容,即JRE本身和教程中的示例代碼。它可能還沒有任何風格指南,但如果斯圖爾特馬克斯認識到並推薦這種模式,它很快就會成爲一種常見模式。順便說一句,我獨立地得出了相同的結論,所以它真的是一種可識別的模式。 – Holger 2015-03-02 08:46:18

回答

13

因爲我寫了那段話,我覺得有必要回答。 :-)

假設您有一個類表示單一類型事物的聚集,並且您想將它們的Stream返回給調用者。

如果對於你要返回的東西完全毫不含糊,那麼你也可以調用方法stream()。 JDK中有很多方法,名爲stream(),它們返回一個明顯類型的流。

有時你要返回的是同一事物或不同事物的不同表示,或其他。在這種情況下,似乎有一個慣例來選擇一個複數名詞來表示流中返回的事物的類型。

要查看這些內容,請查看Javadoc並點擊頂部導航欄中的使用鏈接。這將帶您進入交叉參考頁面。尋找那些有你感興趣的。

例如類型的返回值的所有方法,請參閱使用StreamIntStreamLongStreamDoubleStream。有很多名爲stream()的方法返回流。但也有:

  • java.io.BufferedReader.lines()
  • java.lang.CharSequence.chars()
  • java.lang.CharSequence.codePoints()
  • java.nio.CharBuffer.chars()
  • java.nio.file.File.lines()
  • java.util.Random.ints()
  • java.util.Random.longs()
  • java.util.Random.doubles()
  • java.util.SplittableRandom.ints()
  • java.util.SplittableRandom.longs()
  • java.util.SplittableRandom.doubles()
  • java.util.concurrent.ThreadLocalRandom.ints()
  • java.util.concurrent.ThreadLocalRandom.longs()
  • java.util.concurrent.ThreadLocalRandom.doubles()

當然,也有很多的方法不符合這一點。 NIO文件實用程序類具有Files.find(),Files.list()Files.walk()。分割字符串的結果流由java.util.regex.Pattern.splitAsStream返回。我不認爲有人喜歡AsStream後綴,但是再次,沒有人能想到更好的。另一方面,提議的JDK 9增強功能可以獲得正則表達式匹配結果流,它將被命名爲Matcher.results()

+0

一如既往的啓發。謝謝。 – Vitaliy 2015-03-02 18:40:15