Kotlin'de, özel bir kurucuya sahip bir sınıfın örneğini oluşturan fabrika işlevine sahip olmak mümkün mü?Kotlin - Özel Yapıcı ile Sınıf için Fabrika Fonksiyonu
Amacım, kullanılacak fabrika işlevini zorlamak ve sınıf kurucusu aracılığıyla örneklemeyi önlemek.
Örnek:
// factory function, valid
val myInstance = myClassOf()
// class instantiation, invalid
val myInstance = MyClass()
ben yerleşik fabrika fonksiyonları intArrayOf()
gibi mesela bazı davranışlarını taklit çalışıyorum
import MyClass.Companion.myClassOf
class MyClass private constructor() {
companion object {
fun myClassOf() = MyClass()
}
}
//val myInstance1 = MyClass() // not allowed
val myInstance2 = myClassOf()
Haklısınız, MyClass.myClassOf() demek? –
Companion nesnesini içe aktarırsanız gerek duymazsınız: 'MyClass.Companion.myClassOf' - Daha net olması için cevabı güncelleştiririm –
@JKLy bu yüzden Companion nesnesini veya sınıfı referans olarak almak zorundayım işlevi. IntArrayOf() 'a özel muamele verildiğini ve kendi fabrika fonksiyonum için tekrarlanamayacağını tahmin etmek? İdeal olarak, sınıfın paketini sadece sınıfın kendisinin ithal edebilmek istiyorum. – Pooch