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");
}
}
}