从Java访问Kotlin密封类

ssa*_*nko 9 java kotlin sealed-class

到目前为止,我一直在使用此Kotlin密封类:

sealed class ScanAction {
   class Continue: ScanAction()
   class Stop: ScanAction()
   ... /* There's more but that's not super important */
}
Run Code Online (Sandbox Code Playgroud)

这在我的Kotlin和Java代码中都非常有效。今天,我尝试更改此类以改为使用对象(建议这样做,以减少额外的类实例化):

sealed class ScanAction {
   object Continue: ScanAction()
   object Stop: ScanAction()
}
Run Code Online (Sandbox Code Playgroud)

我可以在其他Kotlin文件中引用这种简单的方法,但是现在我正努力在Java文件中使用它。

我尝试了以下操作,并且在尝试使用Java进行引用时,这两种方法都会反汇编错误:

ScanAction test = ScanAction.Continue;

ScanAction test = new ScanAction.Continue();
Run Code Online (Sandbox Code Playgroud)

有谁知道我现在该如何引用Java中的实例?

Fra*_*esc 19

您必须使用该INSTANCE属性:

ScanAction test = ScanAction.Continue.INSTANCE;
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,我收到“无法解析符号'实例'” (2认同)