Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

328
Vistas
¿Qué es este tipo de Kotlin: (String..String?)

IntelliJ me muestra sugerencias de contexto de que mis variables son de tipo (String..String?) . No puedo encontrar ninguna mención al respecto en Internet, ¿cuál es este tipo?

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

(String..String?) representa un tipo flexible con un límite inferior String y un límite superior String? (cadena anulable). Este no es un código de Kotlin válido (no es denotable ), pero se usa en las partes internas del compilador y, por lo tanto, a veces en las sugerencias de IntelliJ.

(En la JVM, a menudo vemos tipos de plataforma que usan ! como en String! , que son un caso más específico de tipos flexibles)

Es la forma en que Kotlin dice que no sabe si el tipo String declarado para payload.email es anulable o no (por ejemplo, si esto se declara en Java, que no los distingue), y aún así no quiere hacer cumplir cualquiera de esos, por conveniencia (de ahí "flexible").

Como sugiere el nombre, los tipos flexibles son flexibles: se puede usar un valor de tipo (L..U) en cualquier contexto, donde se necesita uno de los tipos posibles entre L y U

Esto significa que aunque el tipo real del valor sea "¿algún lugar entre String y String? " , los valores de este tipo se pueden usar incluso en lugares que esperan String , aunque el tipo real de ese valor pueda ser String? y por lo tanto el valor podría ser nulo.

Esto es útil porque suponiendo que sea String significaría que las comprobaciones nulas se marcarían como redundantes, y suponiendo que sea String? obligaría al desarrollador a escribir cheques nulos en todas partes, aunque podrían saber que este método Java en particular no puede devolver un valor nulo.

En general, es una buena práctica declarar explícitamente el tipo de una variable que obtiene de Java, para evitar la propagación del tipo de plataforma y la incertidumbre (y la inseguridad) que conlleva:

 val email: String = payload.email // if you know it cannot be null val email: String? = payload.email // if you don't know
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda