Bloque de inicialización estática en Kotlin


¿Cuál es el equivalente de un bloque de inicialización estática en Kotlin?

Entiendo que Kotlin está diseñado para no tener cosas estáticas. Estoy buscando algo con semántica equivalente: el código se ejecuta una vez cuando la clase se carga por primera vez.

Mi caso de uso específico es que quiero habilitar la función DayNight de la biblioteca AppCompat de Android y las instrucciones dicen que ponga algún código en el bloque de inicialización estática de la clase Application.

Author: Marcin Koziński, 2016-05-16

2 answers

Desde algún punto de vista, companion objects en Kotlin son equivalentes a partes estáticas de clases Java. En particular, se inicializan antes del primer uso de la clase, y esto le permite usar sus bloques init como reemplazo de los inicializadores estáticos de Java:

class C {
    companion object {
        init {
            //here goes static initializer code
        }
    }
}
 70
Author: hotkey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-16 20:31:42
  companion object  { 

   //STATIC VARIABLE 
           internal var REQUEST_CODE: Int? = 500

      //STATIC METHOD

           fun callToCheck(value: String): String {
           //YOUR CODE
        }

  }

Una declaración de objeto dentro de una clase se puede marcar con la palabra clave companion.Y bajo esto podemos utilizar como java método estático y variable.Como classname.methodname o classname.variablename

 0
Author: abhilasha Yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-19 09:04:16