我一直在学习Kotlin,目前面临两个问题。
私有构造函数的用途是什么?
私人的用途是什么 构造函数中的参数?
我们甚至无法创建具有私有构造函数的类的实例
构造函数中的私有参数...
因此,它们将仅在该类中可见?但是,他们做到了,并且在构造函数中没有private
修饰符。
感谢您的帮助!
答案 0 :(得分:2)
私有构造函数
类似于java
。如果类仅具有私有构造函数,则可以禁止创建类实例。或者,您可以允许此类负责创建其实例(就像在Singleton模式中完成的一样)。
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
答案 1 :(得分:1)
这与Java私有构造函数相同,您可以使用伴侣对象方法实例化该类。
class Foo private constructor(val someData: Data) {
companion object {
fun constructorA(): Foo {
// do stuff
return Foo(someData)
}
}
// ...
}