March 19, 2015

Kotlin M11

Kotlin M11

Múltiples constructores

Los desarrolladores de Android llevaban mucho tiempo esperándolo. Porque la herencia estándar de las vistas de Android requiere tener más de un constructor. A partir de la M11 es posible hace esto:

class MyView : View { constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) { // ... } constructor(context: Context, attrs: AttributeSet) : this(context, attrs, 0) {} }

Esta característica está documentada en la documentación de usuario y en la especificación del lenguaje.

Nuevo keyword para bloques de inicialización

Otro cambio también relacionado con la construcción de objetos, es que a partir de ahora hay que añadir el keyword init en los bloques de inicialización de objetos.

Debido a que el lenguaje soporta una lambda después de una llamada, el compilador se podía confundir en determinados casos. Por ejemplo:

class Foo { val bar = baz() // Aquí se produce un ERROR { // inicializador pre-M11 } }

La nueva sintaxis es la siguiente:

class Foo { val bar = baz() init { // inicializador } }