Question #372EasyNative Android

What are data classes in Kotlin?

#kotlin#data-class

Answer

Overview

Data classes automatically generate common methods for data-holding classes.


Syntax

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

Auto-Generated Methods

1. Constructor

kotlin
val user = User("Alice", 25)

2. Getters

kotlin
println(user.name) // Alice
println(user.age)  // 25

3. equals() and hashCode()

kotlin
val user1 = User("Alice", 25)
val user2 = User("Alice", 25)
println(user1 == user2) // true

4. toString()

kotlin
println(user) // User(name=Alice, age=25)

5. copy()

kotlin
val user1 = User("Alice", 25)
val user2 = user1.copy(age = 26)
// user2 = User("Alice", 26)

6. componentN()

kotlin
val (name, age) = user
println(name) // Alice
println(age)  // 25

Comparison with Java

Java (50+ lines)

java
public class User {
    private String name;
    private int age;
    // Constructor, getters, equals, hashCode, toString
}

Kotlin (1 line)

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

Requirements

  • Primary constructor must have at least one parameter
  • Parameters must be
    text
    val
    or
    text
    var
  • Cannot be
    text
    abstract
    ,
    text
    open
    ,
    text
    sealed
    , or
    text
    inner

Use Case: Perfect for models, DTOs, and value objects.