Conversión De Tipos En Kotlin

En este tutorial verás cómo realizar conversión de tipos en Kotlin de manera explícita. Lo que te permitirá interpretar el contenido de tus variables numéricas de acuerdo al contexto.

Conversión Explícita

Las conversiones explicitas son exigidas por el compilador cuando intentas asignar un tipo de dato numérico que difiere de sus familiares.

Por ejemplo: Intentar inicializar una variable Int con un tipo Short:

val level: Short = 75
val first: Int = level

Del ejemplo anterior esperarías una conversión implícita de tipo, ya que Short es un entero más pequeño que Int. Sin embargo no es el caso.

En Kotlin los tipos pequeños no son subtipos de los grandes. Por ello el compilador de arrojará el siguiente error.

Type mismatch: inferred type is Short but Int was expected
Type mismatch Required: Int Found: Short IntelliJ IDEA

Para realizar la conversión explicita en Kotlin del escenario anterior, usa el método toInt().

val level: Short = 75
val first: Int = level.toInt()

Adicionalmente, IntelliJ IDEA te ayuda a encontrar la solución si haces click en la bombilla roja, y seleccionas Convert expression to ‘Int’.

Convert expression to 'Int' En IntelliJ IDEA

Métodos De Conversión

Si exploras la clase Number de Kotlin, verás que cada tipo primitivo que herede de ella, tiene los siguientes métodos de conversión.

  • toDouble()
  • toFloat()
  • toLong()
  • toInt()
  • toChar()
  • toShort()
  • toByte()

Debido a la diferencia de tamaño de bits en cada tipo, las conversiones aplicaran truncados o redondeos necesarios, cuando el tamaño difiera.

Ejemplo: Imprimir el resultado de la conversión explícita de un número entero que exceda el rango de Short:

fun main() {

    // Redondeo y truncado en conversiones explícitas
    val measure = 4005215
    println("toShort():${measure.toShort()}")
}

La salida de la aplicación será:

toShort():7519

Al no pertenecer al rango Short.MIN_VALUE y Short.MAX_VALUE, se usa el truncado con los 16 bits menos significativos del entero.

Únete Al Discord De Develou

Si tienes problemas con el código de este tutorial, preguntas, recomendaciones o solo deseas discutir sobre desarrollo Android conmigo y otros desarrolladores, únete a la comunidad de Discord de Develou y siéntete libre de participar como gustes. ¡Te espero!