代码之家  ›  专栏  ›  技术社区  ›  CoDe

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

  •  1
  • CoDe  · 技术社区  · 7 年前

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

    但是对于这两种声明,内存分配是如何工作的呢?在java中,内存分配是否像静态的一样工作,并一直保持到应用程序生命周期。

    我已经通过了一些资源,比如 this this ,但对我帮助不大。任何指引!!

    1 回复  |  直到 7 年前
        1
  •  3
  •   anber    7 年前

    我相信回答你这个问题最简单的方法就是在科特林做一个简单的项目,而不是去做 Tools - Kotlin - Show Kotlin bytecode 在IntelliJ Idea中 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");
          }
       }
    }