这些东西在 Kotlin 中的用途是什么?

What is an usage of these things in Kotlin?

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

What's the usage of private constructors?
What's the usage of private parameters in constructors?

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

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

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

感谢任何帮助!

这与 Java 私有构造函数相同,您可以使用伴随对象方法实例化 class。

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

            return Foo(someData)
        }
    }

    // ...
}

私有构造函数

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

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

构造函数私有参数

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

class Holder(private val pri: String, val pub: String) {
}

val holder = Holder("private", "public")
holder.pub    // contains "public"
holder.pri    // not accessible