对象类和伴随对象的Kotlin内存分配行为

时间:2019-01-09 13:08:50

标签: memory-management kotlin kotlin-companion object-class

Kotlin提供了一种更好的方法来创建单例对象和伴侣对象,以通过类名称访问类成员。太酷了!

但是这两个声明的内存分配是如何工作的,是否像java中的static一样工作,并保留到应用程序生命周期。

我经历过诸如 this this 之类的资源,但这并没有太大帮助。任何准则!

1 个答案:

答案 0 :(得分:1)

我相信回答您问题的最简单方法是在Kotlin中进行简单的项目,而不是在IntelliJ Idea中进入Tools - Kotlin - Show Kotlin bytecode,然后在打开的页面中进入Decompile-您将看到确切的内容Kotlin代码已翻译。 例如,您有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");
      }
   }
}