【问题标题】:When is it useful to use a private constructor? [duplicate]什么时候使用私有构造函数有用? [复制]
【发布时间】:2013-01-20 23:40:54
【问题描述】:

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

什么时候使用私有构造函数有用?受保护的呢?

【问题讨论】:

    标签: java constructor private-methods


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我能想到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 的类似推理,它只是将特权少数扩展到子类和包邻居。

      【讨论】:

        【解决方案3】:

        当您想防止对象的外部实例化时,它很有用,例如静态工厂类、单例等。

        【讨论】:

          猜你喜欢
          • 2019-10-16
          • 2016-10-13
          • 2013-10-31
          • 2015-11-02
          • 2011-03-17
          相关资源
          最近更新 更多