为什么我无法从 java 端创建 Kotlin 对象?

the*_*aba 3 java kotlin

我正在研究 Kotlin 与 java 的互操作。

我找不到这样的问题的答案。我有一个来自 kotlin 的对象:

object Test {
    fun main(args: Array<String>) {

    }
}
Run Code Online (Sandbox Code Playgroud)

反编译后的形式如下所示:

public final class Test {
   public static final Test INSTANCE;

   public final void main(@NotNull String[] args) {
      Intrinsics.checkParameterIsNotNull(args, "args");
   }

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

问题是:为什么当我尝试创建对象时,我看到 Test 具有私有访问权限的错误?反编译代码中没有私有构造函数......

Aut*_*pps 7

您无法创建objects 的实例。这就是 Kotlin 定义单例的方式。如果您希望能够实例化它,则必须将其声明为普通class.

如果您确实希望它是一个单例,但希望在 Java 端使用该单个实例,我想您可以将其引用为Test.INSTANCE.