Kotlin Распределение памяти для класса объекта и объекта-компаньона

Kotlin предоставляет лучший способ создания одноэлементного объекта и сопутствующего объекта для доступа к члену класса через имя класса. Круто это!!

Но как распределение памяти работает для обоих объявлений, работает ли это так же, как статическое в java, и сохраняется до жизненного цикла приложения.

Я прошел через несколько таких ресурсов, но это не сильно помогло мне. Любое руководство!

1 ответ

Я считаю, что самый простой способ ответить на ваш вопрос - сделать простой проект в Котлине, чем Tools - Kotlin - Show Kotlin bytecode в IntelliJ Идея и чем Decompile на открывшейся странице - и вы увидите, на что именно переведен код Котлина. Например, у вас есть код Kotlin:

fun main(args: Array<String>) {
    Test.test()
}

class Test {

    companion object TestCompanion{
        fun test() {
            println("TestCompanion")
        }
    }

}

Декомпилированный результат:

public final class MainKt {
   public static final void main(@NotNull String[] args) {
      Test.TestCompanion.test();
   }
}

public final class Test {
   public static final Test.TestCompanion TestCompanion = new Test.TestCompanion();

   public static final class TestCompanion {
      public final void test() {
         System.out.println("TestCompanion");
      }
   }
}
Другие вопросы по тегам