Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

293
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!