避免在 Kotlin 中生成对象的静态实例

Lpp*_*Edd 5 java kotlin

假设我们有一个object诸如

object MyConstants {
   const val ONE: String = "One"
}
Run Code Online (Sandbox Code Playgroud)

生成的字节码类似于

public final class MyConstants {
   @NotNull
   public static final String ONE = "One";
   public static final MyConstants INSTANCE;

   private MyConstants() {}

   static {
      MyConstants var0 = new MyConstants();
      INSTANCE = var0;
   }
}
Run Code Online (Sandbox Code Playgroud)

INSTANCE有没有办法在保持相同的代码布局的同时避免生成字段?这意味着在 Kotlin 和 Java 中都可以通过类访问字段

MyConstants.ONE
Run Code Online (Sandbox Code Playgroud)

小智 0

尝试这样的事情:

class MyConstants {
    companion object {
        const val ONE: String = "One"
    }
}

class Test {

    fun test(){
       System.out.println(MyConstants.ONE) 
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 问题是伴随对象仍然会产生不需要的/不需要的实例。 (2认同)