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 |