guava:为什么方法create()而不是构造函数?

Lal*_*loi 9 java constructor static-methods guava

请问,您能解释为什么番石榴的创建者更喜欢将构造函数定义为私有,并定义静态方法create()来创建对象吗?

Lou*_*man 19

有效的Java项目1:考虑静态工厂方法而不是构造函数.

静态工厂方法的一些优点包括:

  • 它们在Java 7之前自动推断类型参数.
  • 它们允许我们控制继承模式:我们可以在Guava中继承集合类型,而不需要让外部代码继承它们.
  • 它们让我们返回所需类型的任意子类,让我们更好地隐藏实现细节.

  • 书籍内容[在线提供](http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec1). (5认同)
  • @JBNizet:我们确实为JDK集合实现提供了这些方法,但对于我们自己开发的集合类型,我们实际上通常没有比`create`更详细的工厂名称.(当然,我不确定这是正确的电话,正是因为你描述的原因.) (2认同)