Kotlinでは、プライベートコンストラクタを使用してクラスのインスタンスを作成するファクトリ関数を使用できますか?Kotlin - プライベートコンストラクタを持つクラスのファクトリ関数
私の目標は、使用するファクトリ関数を強制し、クラスのコンストラクタによるインスタンス化を防ぐことです。
例:
// factory function, valid
val myInstance = myClassOf()
// class instantiation, invalid
val myInstance = MyClass()
私は、例えば、intArrayOf()
のような組み込みの工場機能のいくつかの動作を模倣しようとしています
import MyClass.Companion.myClassOf
class MyClass private constructor() {
companion object {
fun myClassOf() = MyClass()
}
}
//val myInstance1 = MyClass() // not allowed
val myInstance2 = myClassOf()
MyClass.myClassOf()は正しいですか? –
コンパニオンオブジェクトをインポートする必要はありません: 'MyClass.Companion.myClassOf' - 明確になるように答えを更新します –
@JKLyこれを参照するためにCompanionオブジェクトまたはクラスをインポートする必要があります関数。 'intArrayOf()'には特別な扱いが与えられていて、私自身のファクトリ関数では複製できないと思いますか?理想的には、私は、クラスそのものではなくクラスのパッケージをインポートすることができるようにしたいと考えています。 – Pooch