【问题标题】:What is an usage of these things in Kotlin?Kotlin 中这些东西的用途是什么?
【发布时间】:2019-11-24 21:01:01
【问题描述】:

我一直在学习 Kotlin,目前面临两个问题。

私有构造函数有什么用?
私人的有什么用 构造函数中的参数?

  1. 我们甚至无法创建具有私有构造函数的类的实例

  2. 构造函数中的私有参数...

因此,它们将仅在该类中可见?但是,他们这样做了,并且在构造函数中没有 private 修饰符。

感谢任何帮助!

【问题讨论】:

    标签: kotlin constructor visibility access-modifiers


    【解决方案1】:

    私有构造函数

    类似于java。如果类只有私有构造函数,您可以禁止创建类实例。或者您可以允许此类负责创建其实例(就像在单例模式中所做的那样)。

    class Singleton private constructor(val name: String) {
        companion object {
            fun getInstance(): Singleton {
                return Singleton()   // Simplified
            }
        }
    }
    

    构造函数私有参数

    如果类C 的构造函数具有val s: String 参数,则它成为实例公共属性属性,并且可以像C.s 一样访问。如果我们将这些参数声明为private,它将成为实例私有属性。

    class Holder(private val pri: String, val pub: String) {
    }
    
    val holder = Holder("private", "public")
    holder.pub    // contains "public"
    holder.pri    // not accessible
    

    【讨论】:

      【解决方案2】:

      这和Java私有构造函数一样,你可以使用伴生对象方法来实例化类。

      class Foo private constructor(val someData: Data) {
          companion object {
              fun constructorA(): Foo {
                  // do stuff
      
                  return Foo(someData)
              }
          }
      
          // ...
      }
      

      【讨论】:

        猜你喜欢
        • 2012-12-28
        • 2012-01-25
        • 2018-04-09
        • 2013-08-12
        • 2018-02-23
        • 2012-10-24
        • 2011-04-27
        • 2015-06-12
        • 1970-01-01
        相关资源
        最近更新 更多