在Kotlin中,是否可以编写一个工厂函数来创建一个具有私有构造函数的类的实例?
我的目标是强制使用工厂函数来创建对象,并防止通过类的构造函数实例化。
示例:
// factory function, valid
val myInstance = myClassOf()
// class instantiation, invalid
val myInstance = MyClass()
我正在尝试模仿一些内置的工厂函数的行为,例如intArrayOf()
。
// works
val myIntArray = intArrayOf()
// not possible as IntArray has a private constructor
val myIntArray = IntArray()
MyClass.Companion.myClassOf
。我会更新答案以使其更清晰。 - JK LyintArrayOf()
被特殊处理了,不能复制到我的工厂函数中?理想情况下,我希望只需导入类的包而不是类本身。 - PoochIntArray
有一个公共的构造函数 -val myIntArray = IntArray()
不能编译的原因是该构造函数签名为IntArray(size)
。我不认为您可以在没有限定符或导入的情况下调用顶级函数或伴生对象上的函数。 - JK Ly