Котлин установил переменную и вызвал метод в главном классе из сопутствующего объекта

Я новичок в Kotlin, и я не понимаю, если / как я могу вызвать функцию или установить переменную из объекта-компаньона:

class MyClass {
    public var myVar: Boolean
    public fun myFunc(): Int { ... }

    companion object {
        private fun doStuff(){
            myVar = true
            myFunc(1)
        }        
    }   
}

Я получаю неразрешенную ссылку на myVar = true а также myFunc(1),

1 ответ

Сопутствующий объект - это объект, который не связан ни с одним конкретным экземпляром MyClassпоэтому он не может получить доступ к свойству экземпляра myVar и функция экземпляра myFunc без указания экземпляра. Он просто не знает, к какому экземпляру он должен получить доступ.

Если вы действительно хотите сделать это с помощью функции в объекте-компаньоне, вы должны передать ему экземпляр MyClass также:

companion object {
    private fun doStuff(instance: MyClass){
        instance.myVar = true
        instance.myFunc(1)
    }        
}   
Другие вопросы по тегам