Sobes.tech
Middle

¿Para qué se utilizan las clases de datos y las clases selladas en Kotlin?

sobes.tech AI

Respuesta de la IA

Las clases de datos facilitan la creación de clases destinadas únicamente a almacenar datos. El compilador genera automáticamente para ellas:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() para destructuración
clase de datos User(val nombre: String, val edad: Int)

// Uso
val user = User("Alice", 30)
println(user) // Muestra User(nombre=Alice, edad=30)
val user2 = user.copy(edad = 31)
val (nombre, edad) = user // Desestructuración

Las clases selladas representan una jerarquía limitada de clases, donde todas las subclases posibles son conocidas en tiempo de compilación. Esto permite usarlas en expresiones when sin un bloque else, garantizando una comprobación exhaustiva de todas las opciones.

clase sellada Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result() // Objeto, ya que no tiene parámetros
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Éxito: ${result.data}")
        is Result.Error -> println("Error: ${result.message}")
        Result.Loading -> println("Cargando...")
    }
}

Comparación:

Característica Clase de datos Clase sellada
Propósito Almacenamiento de datos Jerarquía limitada de clases
Capacidades Generación automática de métodos Verificación exhaustiva en when
Subclases Sin restricciones específicas Deben estar en el mismo archivo o módulo
Uso Modelos de datos, DTOs Representación de estados, eventos, opciones