Llamar a una function de order superior de Kotlin desde Java
Tengo una class de ayuda Kotlin definida como:
class CountdownTimer(endDateInSeconds: Long, callback: (timeRemaining: RemainingTime) -> Unit)
que como su nombre lo indica, toma un time de época y una callback a invocar a intervalos fijos (segundos en este caso) hasta que se alcanza la date de finalización. RemainingTime es una class de datos que contiene la cantidad de time (segundos, minutos, horas, etc.) hasta la date de finalización.
- ¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?
- Kotlin: syntax adecuada "si el elemento no está en la list"
- Botón de dialog Anko titile
- Implementación de SQLite en Kotlin y Anko
- ¿Cómo puedo configurar el layoutmanager en RecycleView usando kotlin?
Puedo usar esta class de Kotlin limpiamente:
countdownTimer = CountdownTimer(endDate, { timeRemaining -> var timeString = // format time remaining into a string view?.updateCountdownTimer(timeString) })
Sin embargo, cuando llamo esto desde Java, me veo obligado a proporcionar un valor de retorno innecesario en la callback, aunque la function anónima especifique un tipo de devolución de unidad (que en teoría es el equivalente de un tipo de devolución nula de Java):
this.countdownTimer = new CountdownTimer(this.endDate, remainingTime -> { var timeString = // format time remaining into a string if (view != null) { view.updateCountdownTimer(timeString); } return null; });
Si bien técnicamente no es un problema, tener que proporcionar un valor de retorno sin sentido a partir de la callback de Java parece … incorrecto. ¿Hay una mejor manera de express esta callback en Kotlin?
- Prueba de unidad de complemento IDEA Intellij (dependencies de proyecto de testing)
- Prueba JUnit en Kotlin
- Forma correcta de inyectar Dagger 2 + Kotlin + ViewModel
- Kotlin: la mejor forma de convertir Singleton DatabaseController en Android
- Advertencia de supresión de kotlin obsoleta para Android
- Referencia de propiedad anidada Kotlin
- Excepción al usar spring-data-mongodb con Kotlin
- Kolin - Lista de artículos para el artículo de lists
Unit
es un object
y no es directamente equivalente a void
. En el background, incluso el código kotlin includeá la return Unit.INSTANCE;
al final de la callback. No hay forma de evitarlo, excepto definir una interfaz separada que siempre devuelve void
.
- Cómo inyectar dependencies en una aplicación ktor
- ¿Por qué AtomicInteger es abstracto en Kotlin? (funciona bien en Java)