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:
- No se puede "findViewById" en Kotlin. Obteniendo el error "Falló la inferencia de tipo"
- ¿Cómo sé el tipo inferido en Kotlin?
- ¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?
- Escriba inferencia con initialization diferida y método de fábrica genérico en Kotlin
- No se pudo deducir Kotlin y RxJava
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 haciendo mal o cómo Kotlin no puede inferir el tipo de Flowable automáticamente?
- Escriba inferencia para types de parameters lambda
- Escriba un problema de interferencia con WebFlux WebTestClient y Kotlin
- ¿Es posible el cruce de intersecciones en Kotlin?
- Falló la inferencia de tipo: no hay suficiente información para inferir el parámetro. Especifíquelo explícitamente.
- Error de compilation de la inferencia del tipo Kotlin al usar la API de Akka java
- La inferencia del tipo Kotlin falló
- Escriba inferencia con constructores funcionales
Esta no es toda una respuesta, pero es demasiado larga para un comentario.
En el primer caso que no se comstack, el error tiene que ver con que Kotlin no selecciona el método correcto de Flowable::just
para pasar a Flowable.flatMap(...)
. Hay 10 diferentes methods Flowable.just(...)
definidos donde la diferencia es la cantidad de arguments.
En el segundo caso, está pasando Flowable.flatMap()
una lambda que llama explícitamente a la versión de parámetro único de Flowable.just()
(es decir, la versión de un único parámetro).
En el primer caso, Kotlin aparentemente está eligiendo uno de los otros diez methods Flowable::just
lugar de search uno que coincida con la firma esperada por Flowable.flatMap()
(de los cuales hay 12 definidos). Por el contrario, Java puede deducir (a partir de la firma del parámetro) cuál de las muchas sobrecargas de .just()
para pasar.
Esta puede ser una deficiencia de Kotlin, pero me gustaría escuchar lo que uno de los expertos en comstackdores de Kotlin tiene que decir.