Kotlin no sólo simplifica el código que crees en su lenguaje, sino que mediante una serie de convenciones hace que todo el código Java sea mucho más sencillo de utilizar.
¿Cómo lo hace? Simplemente toma algunas estructuras generales y les da un aspecto más “Kotlin”.
En este artículo vamos a ver algunos ejemplos, y cómo esto hace nuestro código mucho más homogéneo y más sencillo, evitando gran parte del boilerplate.
¿Te gustaría comenzar hoy a dar el siguiente paso? Te recomiendo que entres en mi training gratuito aquí.
Integraciones de Kotlin con el SDK de Android
Puesto que el framework de Android es básicamente una librería Java, todo lo que hablábamos antes que ocurre con Java, se aplica perfectamente a Android.
Esto va a hacer que muchas veces parezca que el framework de Android se ha escrito en Kotlin, aunque obviamente no es así. Vamos a ver algunos ejemplos:
Los getters y setters se mapean a properties
Esto ya lo hemos visto en algunos artículos anteriores. Aquí tienes la explicación que te prometí.
Como ya hablamos, en Kotlin se usan properties en lugar de campos + getters + setters, y la forma de asignar valores o recuperarlos es la que utilizaríamos con un campo público en Java.
Pero como ya sabemos, por detrás se está ejecutando un código, que bien puede ser una asignación directa, o la operación personalizada que nosotros implementemos.
La regla aquí es que cualquier setX
y getX
que encuentre en java, lo va a mapear a un property x
en Kotlin.
Por ejemplo, si tenemos un TextView
, vamos a poder asignarle directamente el texto como si fuera una propiedad:
val textView: TextView = ... textView.text = "My Text"
Y esto se aplica a cualquier clase, claro. Puedes acceder al applicationContext o al layoutInflater
de una Activity (por poner dos ejemplos) de la misma forma. No hagas mucho caso a los ejemplos en particular, son un poco absurdos:
layoutInflater.inflate(R.layout.view_item, parent) val hello = applicationContext.getString(R.string.hello)
Si te preocupa el rendimiento de esto, en realidad por detrás sigue mapeando a los getters y los setters originales, así que es lo mismo que llamarlos directamente.
Las interfaces con un sólo método se transforman en lambdas
Esto es una maravilla. ¿No estás harto de crearte clases anónimas para cualquier tontería en Android? Con Kotlin puedes evitarte el tener que hacer esto para muchos de los listeners del framework.
La condición es esa: que sea una interfaz con un único método. El ejemplo más característico es el setOnClickListener
de la clase View
.
Puedes hacer algo tan sencillo como esto:
view.setOnClickListener { navigateToNextActivity() }
¿Has visto qué fácil?
Si necesitas la vista que devuelve el método de la interfaz original, también puedes recuperarla:
view.setOnClickListener { v -> navigateWithView(v) }
Spoiler: ¿qué es esta nomenclatura tan rara? Se llama lambda, y es una forma de representar funciones donde recibe unos parámetros de entrada (lado izquierdo de la flecha) y realiza una operación, pudiendo devolver un valor de retorno (lado derecho de la flecha). Las veremos en algún artículo posterior.
Conclusión
Es así de sencillo integrar otras librerías de Java, y en particular el framework de Android, en proyectos Kotlin y que además tomen la apariencia de ese lenguaje.
De esta forma tenemos un código mucho más homogéneo.
Si quieres aprender mucho más sobre el lenguaje y hacerlo desde cero, apúntante a mi training gratuito, donde tendrás una hora y media de contenido para saber cuáles son tus siguientes pasos a dar para convertirte en un experto en Kotlin.
Al instalar el Kotlin me pide el SDK pero lo instalo y aun me sigue pidiendo
Si has seguido todos los pasos de la guía (o del primer artículo), deberías tenerlo todo listo. Has configurado los build.gradle correctamente?