Вызов функции Kotlin с параметром как запечатанный класс из Java

Мой Котлин класс 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, Может кто-нибудь помочь, как я могу решить это?

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;
   }
}
Другие вопросы по тегам