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 @JvmStatic
ellos 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