Llamando a la función Kotlin con parámetros como la clase sellada desde Java

Khusl:

Mi clase Kotlin TimeUtilsha declarado una clase sellada como:

sealed class TimeUnit {
    object Second : TimeUnit()
    object Minute : TimeUnit()

fun setTimeOut(timeout : TimeUnit) {
    // TODO something
}

Mi clase Java está llamando setTimeOutmétodo como:

TimeUtils obj = new TimeUtils();
if (some condition) {
    obj.setTimeOut(TimeUtils.TimeUnit.Minute);   // ERROR
} else if (some other condition) {
    obj.setTimeOut(TimeUtils.TimeUnit.Second);   // ERROR
}

Estoy consiguiendo error por encima de 2 líneas que indica expression required. Puede ayudar a nadie cómo lo puedo resolver?

jaychang0917:

Usted debe invocar la función de la siguiente manera:

obj.setTimeOut(TimeUtils.TimeUnit.Minute.INSTANCE);

Es porque object Minuteserá compilado para el siguiente código de Java:

public final class Minute {
   public static final Minute INSTANCE;

   private Minute() {
   }

   static {
      Minute var0 = new Minute();
      INSTANCE = var0;
   }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=231736&siteId=1
Recomendado
Clasificación