Sobes.tech
Middle

¿Qué objetos hay en Kotlin y cómo se compilan?

sobes.tech AI

Respuesta de la IA

Los objetos en Kotlin se utilizan para crear singletons. Se declaran con la palabra clave object.

object Singleton {
    fun doSomething() {
        println("¡Hola desde el singleton!")
    }
}

Al compilar, el objeto Kotlin Singleton se transforma en una clase Java Singleton con un campo estático privado INSTANCE y un bloque de inicialización estático.

// Ejemplo de código Java generado
public final class Singleton {
   public static final Singleton INSTANCE; // Campo estático para la única instancia

   public final void doSomething() { // Método del objeto
      System.out.println("¡Hola desde el singleton!");
   }

   private Singleton() { // Constructor privado para evitar crear otras instancias desde fuera
   }

   static { // Bloque estático de inicialización
      INSTANCE = new Singleton(); // Creación de la única instancia
   }
}

Al llamar al método del objeto Singleton.doSomething() en Kotlin, el compilador genera una llamada al método estático Singleton.INSTANCE.doSomething() en Java.

Además de los objetos normales, en Kotlin existen:

  • Objeto compañero (companion object): Se usa para definir miembros estáticos dentro de una clase. Se accede a ellos mediante el nombre de la clase. Cada clase puede tener como máximo un objeto compañero.

    class MyClass {
        companion object {
            const val MY_CONSTANT = "some value"
            fun create(): MyClass {
                return MyClass()
            }
        }
    }
    

    Se compila en miembros estáticos de la clase en Java.

  • Expresión de objeto (object expression): Se usa para crear objetos anónimos (como clases anónimas en Java).

    val listener = object : MyInterface {
        override fun onClick() {
            println("¡Clickeado!")
        }
    }
    

    Se compila en una clase anónima en Java.