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