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

У меня класс Super:

open class A { fun doStuff() { } } 

а затем у меня есть дополнительный класс, который расширяет его:

 class B: A() { companion object { doStuff() //compile error } } 

Как я могу вызвать метод doStuff () из объекта-компаньона?

Вы не можете.

Сопутствующий объект является грубым эквивалентом ключевого слова static в Java. Функция doStuff() класса A (и ее подклассы) может быть вызвана только из фактического объекта этого класса (например, A().doStuff() или B().doStuff() )

При попытке вызвать эту функцию из сопутствующего объекта B нет такого объекта A (или B ), на который вы могли бы вызвать эту функцию, поскольку вы находитесь в статическом контексте.

Если вы напишете эквивалент Java того, что вы разместили, вы получите сообщение об ошибке

нестатический метод не может ссылаться на статический контекст

который более описателен, чем то, что вы, вероятно, получаете от компилятора Kotlin, и здесь хорошо объяснено.

Intereting Posts
Котлин | Merge 2 ArrayList <Int> В одном массиве ArrayList <Int> Statusbar не прозрачен, но белый Spring не может обрабатывать метод, возвращающий общий внутренний класс Kotlin Вызвать лямбда с параметром / s в функции более высокого порядка Enums и With в Котлине Котлин строит, вызывая JVM к ошибке сегментации Firebase – безопасно входить в чат с паролем В чем разница между нормальным классом и классом данных в котлине Android Kotlin child onClick блокирует родительский OnTouch Gradle sinc не удалось с расширением kotlin. для строки ввода: "" в файле build.gradle file module (app) kotlin coroutine val vs fun Android: Как сделать преобразователи типов (для комнаты) универсальными для всех Список объектов в Котлине Как создать заголовок вложенного / разделенного столбца с помощью TornadoFx? как добавить gradle (идеально используя kotlin-dsl) в существующий проект intellij python Интерфейс Kotlin представляет собой класс java: случайное переопределение