Kotlin Распределение памяти для класса объекта и объекта-компаньона - PullRequest
0 голосов
/ 09 января 2019

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

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

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

1 Ответ

0 голосов
/ 09 января 2019

Я полагаю, что самый простой способ ответить на ваш вопрос - сделать простой проект в Kotlin, чем перейти к Tools - Kotlin - Show Kotlin bytecode в IntelliJ Idea и затем 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");
      }
   }
}
...