Java 一个元素流的最佳实践是什么?

Java 一个元素流的最佳实践是什么?,java,Java,假设我有一个方法 void doSomething(int x){ Stream<Long> stream = someUtil.getSomething(x); } 我正在讨论的是,是否让此方法返回一个最大大小为1的流,而不是返回一个可选的流,调用者将这样转换: void doSomething(int x){ Stream<Long> stream = Stream.of(someUtil.getSomething(x).get()); //convert

假设我有一个方法

void doSomething(int x){
  Stream<Long> stream = someUtil.getSomething(x);
}
我正在讨论的是,是否让此方法返回一个最大大小为1的流,而不是返回一个可选的流,调用者将这样转换:

void doSomething(int x){
  Stream<Long> stream = Stream.of(someUtil.getSomething(x).get()); //convert to stream ourselves as the caller
}
目前我们只有一个调用方doSomethingint x,但是对于这个调用方和未来的调用方来说,更容易期望流。同时,我们总是返回大小为1的流,这可能会产生误导


什么是正确的、可读的、可维护的和最容易混淆的方法?

这不是一个足够的问题,因为它引发了一场辩论

若您的方法契约最多返回1个值,那个么在imo中返回可选值的可读性要高得多

如果您使用的方法是流式处理值,则返回流的可读性要高得多

您可以根据需要使用Optional::stream和stream::findFirst在两者之间进行转换。java 9。

不要使用get从Optional中获取值。如果可选项为empty.FYI,它将抛出异常,因为Java 9可以直接调用。番石榴提供溪流。溪流可选。
void doSomething(int x){
  Stream<Long> stream = Stream.of(someUtil.getSomething(x).get()); //convert to stream ourselves as the caller
}