从java调用带有参数作为密封类的Kotlin函数

我的 Kotlin 类TimeUtils有一个密封类声明为:


sealed class TimeUnit {

    object Second : TimeUnit()

    object Minute : TimeUnit()


fun setTimeOut(timeout : TimeUnit) {

    // TODO something

}

我的 Java 类正在调用setTimeOut如下方法:


TimeUtils obj = new TimeUtils();

if (some condition) {

    obj.setTimeOut(TimeUtils.TimeUnit.Minute);   // ERROR

} else if (some other condition) {

    obj.setTimeOut(TimeUtils.TimeUnit.Second);   // ERROR

}

我在以上 2 行中收到错误说明expression required。任何人都可以帮助我如何解决它?


扬帆大鱼
浏览 160回答 1
1回答

HUWWW

您应该按如下方式调用该函数:obj.setTimeOut(TimeUtils.TimeUnit.Minute.INSTANCE);这是因为object Minute会被编译成下面的Java代码:public final class Minute {   public static final Minute INSTANCE;   private Minute() {   }   static {      Minute var0 = new Minute();      INSTANCE = var0;   }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java