>

Kotlin: Más y mejor #AndroidMeetsKotlin

Francisco Manuel López Jurado     Colaboraciones    30/06/2017

En el post anterior de introducción a Kotlin vimos varias características que nos aporta este lenguaje y que nos simplifican el día a día de nuestro trabajo o hobbie. A continuación vamos a detallar su simpleza a la hora de crear clases, evoluciones que aporta a los enums, el operador “when” y su potencial, funciones de extensión, etc. En definitiva, poco a poco dejarás de ver este lenguaje como algo alternativo y empezarás a decir: “¡En Kotlin esto es más sencillo y con menos código!&rdquo

Características:

  1. Clases y propiedades

La simplicidad tiene que empezar desde lo más básico, por lo que se acabó la creación de código innecesario cada vez que creamos un objeto. Nos referimos a los getters, setters y constructores que han pasado a una mejor vida y nos abstraemos totalmente de ellos. Ejemplo:

Creamos un objeto GitRepo con 5 campos, “id”, “fullName”, “htmlUrl” “description” e “isPrivate”, todos de tipo String menos el último que se tratará de un Boolean. Además hemos declarado un método que nos indicará si la descripción tiene menos de 4 caracteres.

A continuación crearemos un objeto y modificaremos un campo y obtendremos otro.

2. Set, Listas y mapas

La forma de crear una colección de objetos difiere bastante de Java en cuanto a nomenclatura y mutabilidad. Las siguientes colecciones que vamos a crear serán inmutables, es decir, sólo podremos acceder a sus métodos get, size y similares, pero nunca a los métodos add, put, clear, etc. A continuación crearemos una serie de objetos inmutables:

Para crear objetos mutables debemos crearlos con los métodos que tienen el prefijo “mutable”, de esta forma podremos llamar a los métodos add, put, clear, etc. Ejemplo:

3. ¿Enums dopados? En Kotlin, existen

Todos somos conscientes de la importancia de los enums en cualquier parte de la lógica de negocio de una aplicación pero sus limitaciones hacen que tengamos que hacer acrobacias para poder incorporarlo. Gracias a Kotlin los Enums se vuelven mucho más potentes y hacen que sean perfectos ya que podemos incluir métodos dentro de ellos y sacarles todo el partido.

A continuación vamos a crear una clase enum llamada Country con dos propiedades y un método.

Nomenclatura su uso:

El operador “switch” de Java es traducido por “when” pero además, éste incorpora una serie de funcionalidades que son muy completas y que nos eliminará código innecesario. Todo esto será explicado en el siguiente apartado, pero antes veremos la aplicación más trivial:

4. Operador “when”, mucho más que un “switch”

Podemos usarlo para realizar “smart casts”, es decir, por ejemplo nos puede servir para obtener los campos que más nos interese según el tipado del objeto que comprobaremos. En este ejemplo tenemos 3 objetos:

  • GameConsole, tiene un campo “brand” de tipo String.
  • PortableConsole, extiende de GameConsole y añade un campo displaySize de tipo String.
  • NoPortableConsole, extiende de GameConsole y añade un campo controllerNumber de tipo Int.

Hemos creado un método de ejemplo que recibe un objeto de tipo GameConsole y si es de tipo PortableConsole retornará el tamaño de la pantalla y si es de tipo NoPortableConsole retornará el número de mandos permitidos.

Como podemos observar, eliminamos todos los casteos innecesarios y todo ello con menos código y ganando en legibilidad.

5. Operador “in” e “!in”

Se utiliza para saber si un valor está dentro o fuera de un rango, ejemplo:

Se puede usar con tipos String, Int, etc.

6. ¿Try catch para definir valores? ¡Quiero verlo!

Pues sí, podemos usar un bloque try catch para definir un valor, quedará mucho más claro con un ejemplo:

7. Funciones de extensión. ¡Por fin!

Cuántas veces hemos tenido que hacer nuestros propios wrappers para añadir funciones extras a las clases propias del framework con todo el trabajo que esto conlleva y la cantidad de código que genera. Esta funcionalidad nos aporta algo muy útil ya que podemos añadir funciones adicionales sin tocar nada del código base y aprovechar todas las variables que tienen.

Por ejemplo, podríamos hacer la típica funcionalidad que al setear un texto vacío en un TextView, éste se oculte automáticamente. Quedaría tal que así:

  1. Definimos la función de extensión a TextView

  1. La usamos como si fuese un método propio del TextView

Otro aspecto muy interesante que podemos hacer es implementar una función de extensión que cargue una imagen desde una url automáticamente en un ImageView. Esta función será implementada en el siguiente post.

Para finalizar

Con todos estas características que hemos comentado tanto en este post como en el anterior, ya podríamos empezar a realizar una aplicación completamente en Kotlin. Este desarrollo será abordado en los siguientes posts, en los que haremos desde consultas a un servicio hasta el guardado de elementos en la base de datos.


Sobre el autor

Francisco Manuel López Jurado   

Apasionado de la tecnología y todo lo que la rodea. Desarrollador Senior Android e iOS.