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
.
2 answers
Desde algún punto de vista, companion object
s 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
}
}
}
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
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