Articles of type inference

Escriba inferencia con initialization diferida y método de fábrica genérico en Kotlin

Tengo un método de fábrica que produce una list de <T> : inline fun <reified T> getObject(fileName: String): List<T> El método de fábrica se debe usar para la initialization lenta de esta manera: val points: List<Point> by lazy { ObjectFactory.getObject(pointsFileName) } Ahora el comstackdor de Kotlin obviamente no tiene suficiente información de tipo dentro de […]

Escriba un problema de interferencia con WebFlux WebTestClient y Kotlin

Estoy construyendo un prototipo para una nueva aplicación usando Spring Webflux y Kotlin. Spring Webflux contiene un WebTestClient para testings unitarias. De acuerdo con la documentation, debería poder probar los resultados de una llamada REST como esta: @Test fun getVersion_SingleResult_ContentTypeJson_StatusCodeOk_ContentEqualsVersion() { //given var version = Version("Test", "1.0") val handler = ApiHandler(version!!) val client = WebTestClient.bindToRouterFunction(ApiRoutes(handler).apiRouter()).build() […]

¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?

En el siguiente código, tengo problemas para organizar la input / salida correctamente de modo que tanto desde () como a () funcionen como se esperaba. Intenté conectar / desconectar tanto las properties como los parameters de la function, pero siempre termino con errores de tipeo incorrectos. class KStateMachine(private val states: List<StateHandler>) { var currentState: […]

Error de compilation de la inferencia del tipo Kotlin al usar la API de Akka java

Quiero usar Akka java API en un progtwig de Kotlin. Cuando quiero establecer onComplete callback completa para un akka Future , encuentro el error del comstackdor de Kotlin, mientras que el equivalente de Java funciona bien: val future: Future<Any> = ask(sender, MyActor.Greeting("Saeed"), 5000) future.onComplete(object : OnComplete<Object>() { override fun onComplete(failure: Throwable?, success: Object?) { throw […]

Escriba inferencia con constructores funcionales

Estoy usando Kotlin KBuilders con algunos protobuffs y me he encontrado con una situación que me está confundiendo. Para comenzar, tengo una function que toma un nombre de file y una list de JSON serializados y deserializa ese JSON en un protobuff. fun parseFileData(fileName: String, lines: List<String>): Data.Builder.() -> Unit = when (fileName) { SOME_FILE_NAME […]

Escriba inferencia para types de parameters lambda

Kotlin no comstack este código porque, como el comstackdor dice "Error: Smart Cast a 'Nothing' es imposible, porque 'accumulator' es una expresión compleja" La function antigua se llama lo que cabría esperar, es decir, quiero devolver el indexOfMax, pero lo que es más importante es entender por qué el "lanzamiento inteligente" no pudo lanzar al […]

No se pudo deducir Kotlin y RxJava

Estoy intentando implementar el rebash cuando en mi Observable cuando está ocurriendo un timeot, pero tengo errores extraños subrayados en IDE Android Studio 3.0 Aquí está el código: rxRssiRepository.onRssiUpdate() //returns Observable<RssiEvent> .timeout(10, TimeUnit.MILLISECONDS) .retryWhen { t: Observable<Throwable> -> t.flatMap { error: Throwable -> if (error is TimeoutException) { stopLocationUpdates() Log.v("TIMEOUT", "TIMEOUT RSSI EVENTS") Observable.just(Observable.empty()) } […]

Kotlin no puede inferir el tipo cuando utiliza la reference de método en Flowable

Tengo este código en Java: Flowable.just(1,2,3) .flatMap(Flowable::just); y este código en Kotlin: Flowable.just(1,2,3) .flatMap(Flowable::just) Mientras que el código Java comstack bien, el comstackdor de Kotlin dice: "Error: (47, 30) Kotlin: un tipo de argumento esperado para la class Flowable: Publisher definido en io.reactivex" Sin embargo, esto comstack bien: Flowable.just(1,2,3) .flatMap { Flowable.just(it) } ¿Qué estoy […]

La inferencia del tipo Kotlin falló

Digamos que tenemos una biblioteca Java de terceros con dicha class: //—————————————————————————————- package foo; public final class Functions { public interface VoidFunc0 { void call(); } public interface VoidFunc1<T> { void call(T t); } @SuppressWarnings("unchecked") public static <T> NoOpFunc<T> noOp() { return new NoOpFunc(); } /*public*/ static final class NoOpFunc<T> implements VoidFunc0, VoidFunc1<T> { @Override […]

¿Cómo sé el tipo inferido en Kotlin?

(Yo uso Kotlin 1.1.2-2) Por ejemplo, ¿cómo sé el tipo inferido de expresión if (boolean_value) 1 else 2.0 ? kotlinc-jvm no muestra el tipo. javaClass tampoco ayuda porque muestra el tipo de valor calculado no expresión. >>> (if (true) 1 else 2.0).javaClass.name java.lang.Integer >>> (if (false) 1 else 2.0).javaClass.name java.lang.Double >>> val v: Double = […]