Вызов функции 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;
}
}