Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能从java端创建Kotlin对象?_Java_Kotlin - Fatal编程技术网

为什么我不能从java端创建Kotlin对象?

为什么我不能从java端创建Kotlin对象?,java,kotlin,Java,Kotlin,我正在研究Kotlin与java的互操作 我找不到这种事情的答案。我有一个来自kotlin的对象: object Test { fun main(args: Array<String>) { } } 问题是:为什么当我尝试创建一个对象时,我会看到测试具有私有访问权限的错误?反编译代码中没有私有构造函数 无法创建对象的实例。这就是Kotlin定义单例的方式。如果希望能够实例化它,则必须将其声明为普通类 如果您确实希望它是一个单实例,但希望它是Java端的单实例,我想

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

我找不到这种事情的答案。我有一个来自kotlin的对象:

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

    }
}

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

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


如果您确实希望它是一个单实例,但希望它是Java端的单实例,我想您可以将它引用为Test.instance。

我看到了带有javap-p Test的私有构造函数。我猜你的反编译器不包括私人成员?谢谢你的回答!我只是想知道是什么阻止了创造?我在反编译的代码中看不到任何东西。我不完全确定技术原因。也许反编译器有限制,但构造函数实际上是私有的。我所知道的是,如果你可以从java方面创建实例,那将会破坏单体合同,带来不愉快的后果。
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;
   }
}