【问题标题】:Calling Kotlin function with parameter as sealed class from java从java调用带有参数作为密封类的Kotlin函数
【发布时间】:2019-07-17 15:00:46
【问题描述】:

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

我在上面两行声明 expression required 时遇到错误。 谁能帮忙解决一下?

【问题讨论】:

    标签: java kotlin sealed-class


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多