何时使用私有构造函数有用?

时间:2013-02-05 22:01:31

标签: java constructor private-methods

  

可能重复:
  What is the use of making constructor private in a class?

何时使用私有构造函数有用?受保护的人怎么样?

3 个答案:

答案 0 :(得分:5)

当您想要阻止对象的外部实例化时,它很有用,例如:静态工厂类,单身人士等。

答案 1 :(得分:1)

我可以想到private的一些用法:

  • 防止外部实例化(完全静态类或单例)
  • 默认构造函数有时需要实例化您的类(例如Hibernate),但您可能不希望将它们公开。
  • 委派构造函数

最后一个完全做作的例子:

private MyClass(int a) {
    this.a = a}

public MyClass(int a, String B) {
    this(a);
    this.b = b;
}

public MyClass(int a, double c) {
    this(a);
    this.b = Double.toString(c);
}

protected的类似推理,它只是将特权少数扩展到子类和包邻居。

答案 2 :(得分:1)

Singleton模式使用私有构造函数来控制对象的实例化。您可能遇到的另一个用例是当您希望在单元测试中使用特殊构造函数时(如果您在没有依赖注入框架的情况下运行单元测试),那么您将不会将其公开,而是打包保护并声明单元测试相同的包裹。