命名返回流的java方法

是否有返回Stream的方法的命名约定? 我发现唯一提到的就是关于SO的答案 (最后一段),但我不知道它的基础是什么。

自从我写了那段以来,我觉得有必要回答。 🙂

假设您有一个表示单个类型事物聚合的类,并且您希望将它们的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()