我正在阅读Joshua Bloch的'Effective Java',在第2项中,他提到了在构造函数中处理几个参数时使用Builder模式的优点。一切都很好,直到我看到传统构造函数和这个模式之间的多个var-args差异。 所以,我对它有一些疑问:
我的代码中没有使用var-args,但是我知道它们的用途。我仍然无法理解上述陈述背后的原因。 任何帮助将不胜感激。
答案 0 :(得分:6)
没有方法签名(包含构造函数)允许多个varargs。只能有一个,它必须是最后一个参数。
这只是语言规范的一个限制。是的,如果你允许更多的灵活性,原因很可能是它变得模棱两可。
在构建器模式中,没有这样的限制,因为每个参数都可以获得自己的方法。
builder
.withOptions("a", "b", "c") // varargs
.withColors("red", "blue") // more varargs
.build();