【问题标题】:Can I make the primary constructor private while keeping auxiliary constructors public in Scala?我可以将主构造函数设为私有,同时在 Scala 中保持辅助构造函数为公开吗?
【发布时间】:2012-02-27 22:22:22
【问题描述】:

因为我只打算重载构造函数供公共使用来创建类实例,所以我想将主构造函数设为私有。这在 Scala 中可行吗?

【问题讨论】:

    标签: scala constructor


    【解决方案1】:

    是的,你可以:

    class A private (x: Int) {
      def this() = this(42)
    }
    

    【讨论】:

    • 你也可以从伴生对象中调用私有主构造函数;对工厂方法很有用。
    【解决方案2】:

    是的 - 您可以通过在类名之后指定修饰符来确定主构造函数的可见性,例如:

    class Foo private (a: Int, b: String) {
       // ...
    }
    

    当然,辅助构造函数仍然可以(事实上,必须)引用这个主构造函数,同时仍然被声明为公共的。

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 2022-01-27
      • 2019-01-10
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多