Saltar al contenido

¿Cuál es la diferencia entre objeto y clase de datos en Kotlin?

Alejandra, miembro de nuestro staff, nos ha hecho el favor de escribir este post ya que domina a la perfección el tema.

Solución:

object

object es la forma en que Kotlin crea un singleton (una clase de instancia) que el compilador crea una instancia.


data class

Una clase de datos es como una clase normal pero con algunas ventajas/restricciones (Fuente).

Ventajas

  • equals()/hashCode()
  • toString()
  • componentN()
  • copy()

Se crean a partir de las propiedades especificadas en el constructor principal.

Restricciones

  • El constructor principal debe tener al menos un parámetro;
  • Todos los parámetros del constructor principal deben marcarse como val o var;
  • no puede ser abstracto, abierto, sellado o interior;
  • (antes de 1.1) solo puede implementar interfaces.

de kotlin object es similar a una clase en Java, donde todos los métodos y variables son static.

object User 
    val name = ""
    fun printName(name: String) = "Hello, $name!"

en Kotlin es similar a lo siguiente en Java:

class User 
    public static String name = "";
    public static String printName(name: String) 
        return "Hello " + name + "!";
    

Ejemplo de uso:

//Kotlin
User.printName(User.name)

//Java
User.printName(User.name);

Un object Sin embargo, no es exactamente lo mismo que la comparación de Java que di. Puede heredar interfaces y clases, y el objeto mismo se instancia como una instancia única. Si anota métodos dentro de un objeto con @JvmStaticellos seran true static miembros

objeto de kotlin


los data class en Kotlin es solo una sintaxis más simple para una clase que no tiene lógica (o es mínima) y contiene ciertos valores. Kotlin genera el equals(), hashCode() y toString() funciones para usted en una clase de datos, junto con algunas otras funciones auxiliares.

data class User(val name: String, val age: String)

en Kotlin se verá así en Java:

class User 
    public final String name;
    public final String age;

    public User(String name, String age) 
        this.name = name;
        this.age = age;
    

    @Override
    public boolean equals(Object other) 
        //Kotlin-generated equality check
    

    @Override
    public long hashCode() 
        //Kotlin's hashcode
    

    @Override 
    public String toString() 
        return "User(name=" + name + ",age=" + age + ")";
    

    //other generated methods

Documentación de la clase de datos de Kotlin

Te mostramos las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *