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 } }