Tengo una llamada de servicio que devuelve una respuesta JSON que luego se pasa a través de un administrador de datos que transforma los datos si el servicio es exitoso o crea un cuerpo de error si la llamada falla.
El administrador de datos está escrito en kotlin y la línea de código particular que me interesa es esta
val mutableList = mutableListOf<Address>() return Result.error(errorTransformation(serviceErrors, mutableList))Mi clase errorTransformation es básicamente una llamada de excepción y está escrita en java. El constructor de la clase de excepción es
ExceptionClass(ServiceErrors serviceError ,List<Address> address){ // initiialize fields here }Ahora, cuando trato de inicializar mi clase de excepción, dice que se encontró el constructor apropiado y me muestra una sugerencia para generar uno con sintaxis
ExceptionClass(ServiceErrors serviceError ,List<? extends Address> address){ // initiialize fields here } ¿Por qué está pasando esto? Solo quiero List<Address> , no List<? extends Address> .
Es un comportamiento específico de Kotlin usar implícitamente List<? extends Address> en lugar de List<Address> . Puede forzar a Kotlin a generar exactamente lo que necesita usando la anotación @JvmSuppressWildcards
val mutableList = mutableListOf<@JvmSuppressWildcards Address>()