Kotlin lambda / Java interoperabilidad SAM - coincidencia de tipos

votos
1

una interfaz Java existente he definido de la siguiente manera

public interface MyRetriever extends Function<String, Optional<String>> {}

y desea definir una variable que contiene una lambda Kotlin que se ajusta a la conversión de SAM según mi entendimiento

var a : MyRetriever = { s : String -> Optional.ofNullable(s.toLowerCase()) }

Pero en vez consigo un error de coincidencia de tipos.

Type missmatch.
Required: MyRetriever
Found: (String) -> Optional<String> 

La lambda realidad coincide con la definición de la función de Java, lo que me estoy perdiendo aquí?

Publicado el 07/11/2018 a las 22:30
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Cuando se realiza una conversión de SAM, es necesario proporcionar explícitamente un tipo:

var a = MyRetriever { s : String -> Optional.ofNullable(s.toLowerCase()) }

Tenga en cuenta que puede omitir la declaración de tipo para ala forma en que lo hizo antes.

Respondida el 07/11/2018 a las 22:43
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more