【问题标题】:guava: why methods create() instead of constructor?番石榴:为什么方法 create() 而不是构造函数?
【发布时间】:2012-11-03 17:02:22
【问题描述】:

请你解释一下为什么 guava 的创建者更喜欢将构造函数定义为私有,并定义静态方法create() 来创建对象?

【问题讨论】:

    标签: java constructor guava static-methods


    【解决方案1】:

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

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

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

    【讨论】:

    • 图书内容也是available online
    • 我要补充一点,从最终用户的角度来看,我认为最重要的是:它们的名称更清晰。 newHashMapWithCapacity(100)new HashMap<Foo>(100) 清晰得多。
    • @JBNizet:我们确实为 JDK 集合实现提供了这些方法,但是对于我们自己开发的集合类型,我们实际上通常没有比 create 更详细的工厂名称。 (当然,出于您所描述的原因,我不确定这是正确的选择。)
    • 非常感谢这些回复,现在清楚多了!
    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多