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

标签 java kotlin sealed-class

我的 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
}

我在上面两行中收到错误,指出需要表达式。 谁能帮我解决这个问题吗?

最佳答案

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

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

关于java - 从 java 调用带有参数作为密封类的 Kotlin 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57078908/

相关文章:

java - 如何将 Lottie 动画从 Kotlin 解释和翻译成 Java?

kotlin - kotlin 中的密封类与密封接口(interface)有什么区别

Java : Need to get the same functionality of the Integer. toHexString() 由于 NumberFormat 异常,带有 String 参数而不是 Int 参数

java - 运行集成测试时,Maven Shade 插件会导致类路径上出现重复的 jar

java - 在 android 版本 5 和 6(android api 21 和 23)中崩溃 ExoPlayer.Builder

kotlin - 在模块中找不到类

kotlin - Kotlin synchronized() 是否不锁定基本类型?

android - 我如何使用密封类来描述具有关联值的有限案例集,以及更小的此类值集?

Kotlin 在 Jackson 中密封了类子类型

java - 将方法(或 void)传递给 Java ArrayList