Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

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

¿Cuál es la diferencia entre los datos y la clase de objeto en Kotlin y cuál es el propósito de cada uno?

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

y

 object user { val name = "" fun printName(name: String) = "Hello, $name!" }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

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.
over 4 years ago · Santiago Trujillo Relatório

0

El object de Kotlin es similar a una clase en Java, donde todos los métodos y variables son estáticos.

 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);

Sin embargo, un object 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 , se convertirán en verdaderos miembros estáticos.

objeto de kotlin


La clase de data 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 las funciones equals() , hashCode() y toString() 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

over 4 years ago · Santiago Trujillo Relatório

0

Primero, no hay clase de objeto , la característica a la que se refiere se llama declaración de objeto .

Declaración de objeto

Esta es una característica de Kotlin que le permite implementar un singleton . La declaración de objeto combina una declaración de clase y una declaración de una sola instancia de la clase en una sola declaración.

 // Let's assume that class Person is defined somewhere else object Payroll { val employees = arrayListOf<Person>() fun calculateSalary() { for (person in employees) { // ... } } } // calling methods and properties >>> Payroll.employees.add(Person("John", 23)) // calling a property >>> Payroll.calculateSalary() // calling a method

Al igual que una clase, una declaración de objeto puede contener declaraciones de propiedades, métodos, bloques de inicialización, etc. Lo único que no están permitidos son los constructores (ya sean primarios o secundarios).

Las declaraciones de objetos se crean inmediatamente en el punto de la definición, no a través de llamadas al constructor desde otros lugares del código.

Nota: la palabra clave de object también se puede usar para objetos complementarios y expresiones de objeto .

Clase de datos

Es muy común crear clases cuyo objetivo principal es almacenar datos. Si desea que su clase sea un contenedor conveniente para sus datos, debe anular los métodos de objetos universales:

  • toString() - representación de cadena
  • equals() - igualdad de objetos
  • hashCode() - contenedores hash

Sin embargo, al agregar los datos del modificador a su clase, los métodos necesarios se agregan automáticamente. Además, también se generan los siguientes métodos:

  • funciones de componentN() correspondientes a las propiedades en su orden de declaración
  • función copy()
 class PersonClass(val name: String, val age: Int) // regular class data class PersonDataClass(val name: String, val age: Int) // data class

En resumen, si necesita un contenedor para datos, debe usar una clase de datos, lo que significa agregar los datos modificadores a su clase. Esto generará los siguientes métodos para usted: toString() , equals() , hashCode() , componentN() y copy() , para evitar escribir código repetitivo. Por otro lado, si necesita crear un singleton, use la función de declaración de objetos.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda