Answer
Overview
Data classes automatically generate common methods for data-holding classes.
Syntax
kotlindata class User(val name: String, val age: Int)
Auto-Generated Methods
1. Constructor
kotlinval user = User("Alice", 25)
2. Getters
kotlinprintln(user.name) // Alice println(user.age) // 25
3. equals() and hashCode()
kotlinval user1 = User("Alice", 25) val user2 = User("Alice", 25) println(user1 == user2) // true
4. toString()
kotlinprintln(user) // User(name=Alice, age=25)
5. copy()
kotlinval user1 = User("Alice", 25) val user2 = user1.copy(age = 26) // user2 = User("Alice", 26)
6. componentN()
kotlinval (name, age) = user println(name) // Alice println(age) // 25
Comparison with Java
Java (50+ lines)
javapublic class User { private String name; private int age; // Constructor, getters, equals, hashCode, toString }
Kotlin (1 line)
kotlindata class User(val name: String, val age: Int)
Requirements
- Primary constructor must have at least one parameter
- Parameters must be ortext
valtextvar - Cannot be ,text
abstract,textopen, ortextsealedtextinner
Use Case: Perfect for models, DTOs, and value objects.