命名返回流的java方法

时间:2015-03-02 08:06:02

标签: java java-8 java-stream api-design

是否有返回Stream的方法的命名约定? 我发现唯一提到的是answer on S.O(最后一段),但我看不出它是基于什么。

1 个答案:

答案 0 :(得分: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()