2015-03-02 115 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