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

389
Vistas
¿Por qué no puedo asignar un tipo anulable a Any en Kotlin?

¿Alguien puede explicar por qué es imposible hacer esto en Kotlin?

 val x :Int? = 123 val y :Any = x

Vengo del fondo .NET donde el tipo anulable se puede asignar al tipo de objeto, pero ¿en qué se diferencian?

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

0

Los tipos anulables no son subtipos de Any , pero son subtipos de Any? .

Any es solo una superclase de tipos que no aceptan valores NULL . Esto hace posible escribir código que requiere una instancia no nula de cualquier cosa y aún así beneficiarse de la seguridad del verificador de tipos (a diferencia de cuando se usa el Object de Java).

Aquí hay una imagen que puede ayudar:

ingrese la descripción de la imagen aquí

El siguiente código es un reemplazo válido del suyo:

 val x: Int? = 123 val y: Any? = x
over 4 years ago · Santiago Trujillo Denunciar

0

De los documentos:

El sistema de tipos de Kotlin tiene como objetivo eliminar el peligro de las referencias nulas del código, también conocido como The Billion Dollar Mistake.

En Kotlin, el sistema de tipos distingue entre las referencias que pueden contener valores nulos (referencias anulables) y las que no (referencias no nulas).

Ejemplo:

 var a: String = "abc" a = null // compilation error var b: String? = "abc" //using `String?` allows you to assign null b = null // ok print(b)

Any es una clase igual que String , la única diferencia es que cada clase tiene Any como superclase. Pero lo anterior que escribí sobre NPE se aplica a todos los tipos en kotlin.

over 4 years ago · Santiago Trujillo Denunciar

0

Sí. El requisito básico para la variable Kotlin es marcar si es anulable o no para evitar NPE.

Aquí en tu caso,

 var x: Int? = 123

se asigna como valor anulable con ? pero cuando lo asignó a Cualquier objeto, ¿se olvidó de agregar anulable? a cualquier objeto

así que var y: Any? = x

hará lo que estamos marcando anulable para y también.

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