【发布时间】:2019-12-14 16:27:05
【问题描述】:
我是 Kotlin 的新手。我想问一下 Kotlin 中的私有构造函数是干什么用的? class DontCreateMe private constructor () { /*...*/ }。我的意思是如果我们不能创建它的实例应该是什么类?
【问题讨论】:
-
如果类只包含静态方法(即在 Kotlin 中有一个伴生对象),或者它应该只由类本身或其伴生对象。例如,参见类 java.util.Optional。您可以创建它的实例。但不是通过调用它的构造函数。只能使用 of() 或 ofNullable() 之类的工厂方法,或者使用 map() 将 Optional 转换为另一个。
-
签出此链接:refactoring.guru/design-patterns/singleton/java/example,代码在 java 但概念相同
-
如果你有一个私有的主构造函数,但你有多个公共的辅助构造函数,这样你就可以限制某些参数的组合。
-
"如果该类仅包含静态方法(即在 Kotlin 中有伴随对象)" 在这种情况下,它应该只是
object,而不是具有私有构造函数和所有方法的类在伴随对象内。 -
@AlexeyRomanov 同意。这更像是对 JVM 上的私有构造函数的一般解释。
标签: kotlin constructor