Czy w Kotlinie istnieje funkcja fabryczna, która tworzy egzemplarz klasy z prywatnym konstruktorem?Kotlin - Funkcja fabryczna dla klasy z prywatnym konstruktorem
Moim celem jest wymuszenie użycia funkcji fabrycznej i zapobieganie powstawaniu instancji za pomocą konstruktora klasy.
Przykład:
// factory function, valid
val myInstance = myClassOf()
// class instantiation, invalid
val myInstance = MyClass()
Próbuję naśladować zachowanie niektórych wbudowanych funkcji fabrycznych jak intArrayOf()
, np
// works
val myIntArray = intArrayOf()
// not possible as IntArray has a private constructor
val myIntArray = IntArray()
Masz na myśli MyClass.myClassOf(), prawda? –
Nie musisz, jeśli zaimportujesz obiekt towarzyszący: 'MyClass.Companion.myClassOf' - Zaktualizuję odpowiedź, aby była jaśniejsza –
@JKLy, więc będę musiał zaimportować obiekt Companion lub klasę, aby odwołać się do tego funkcjonować. Zgadywanie, że 'intArrayOf()' jest traktowany w specjalny sposób i nie można go replikować dla mojej własnej funkcji fabrycznej? Idealnie chciałbym móc po prostu zaimportować pakiet klasy, a nie samą klasę. – Pooch