从 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.谁能帮我解决?

您应该按如下方式调用该函数:

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;
   }
}

相关内容

  • 没有找到相关文章

最新更新