gpt4 book ai didi

Kotlin - 具有私有(private)构造函数的类的工厂函数

转载 作者:IT老高 更新时间:2023-10-28 13:34:45 29 4
gpt4 key购买 nike

在 Kotlin 中,是否可以有一个工厂函数来创建具有私有(private)构造函数的类的实例?

我的目标是强制使用工厂函数并防止通过类的构造函数进行实例化。

例子:

// 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()

最佳答案

您可以使用 companion object这样:

class MyClass private constructor() {
companion object {
operator fun invoke() = MyClass()
}
}

val myInstance = MyClass() // Calls the factory function invoke()

如果工厂函数有特殊含义,请为其命名。例如:

class MyClass private constructor(values: List<String>) {
companion object {
fun of(vararg values: String) = MyClass(values.toList())
}
}

val myInstance = MyClass.of("first", "second")

关于Kotlin - 具有私有(private)构造函数的类的工厂函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45492952/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com