为什么 Stream.Builder 既有添加方法又有接受方法?

2022-09-01 17:27:00

我正在使用Stream.Builder,我偶然发现这个接口同时具有方法和.唯一的区别是前者返回,后者返回 。accept(T t)add(T t)voidStream.Builder

文档甚至提到这些方法具有相同的默认实现:

默认实现的行为类似于:

accept(t)
return this;

请注意,他们忘记了分号,但那是另一回事了。

我的问题是:为什么他们有两种方法可以向流构建器添加内容?我认为这会使API混乱,我认为他们想避免这种情况

是否有任何令人信服的理由这样做?


答案 1

我的猜测:

Stream.Builder 扩展,因此它必须实现该方法。Consumer<T>accept(T)

但是返回,所以我认为他们添加是为了方便:构建器模式实现中的方法通常返回能够链接建筑物并最终调用。accept(T)voidadd(T)thisbuild()


答案 2

推荐