Data classes help you store and manage data easily without writing a lot of code.
Data classes in Android Kotlin
data class ClassName(val property1: Type, val property2: Type)Use data keyword before class to create a data class.
Properties are usually declared in the primary constructor.
User with two properties: name and age.data class User(val name: String, val age: Int)data class Point(val x: Int, val y: Int)data class Book(val title: String, val author: String, val year: Int)This program creates two Person objects and prints their details. The toString() function is automatically created for data classes, so printing person1 shows its properties.
data class Person(val name: String, val age: Int) fun main() { val person1 = Person("Alice", 30) val person2 = Person("Bob", 25) println(person1) println("Name: ${person2.name}, Age: ${person2.age}") }
Data classes automatically generate equals(), hashCode(), toString(), and copy() functions.
All primary constructor parameters need to be marked as val or var.
Data classes cannot be abstract, open, sealed, or inner.
Data classes make storing and handling data simple and clean.
Kotlin creates useful functions for you automatically.
Use data classes when you want to group related data together.
Practice
data class in Kotlin?Solution
Step 1: Understand the role of data classes
Data classes are designed to store data and automatically generate functions liketoString(),equals(), andhashCode().Step 2: Compare with other options
Options B, C, and D relate to UI, navigation, and threading, which are not the purpose of data classes.Final Answer:
To hold data and automatically provide useful functions like toString() and equals() -> Option AQuick Check:
Data class purpose = hold data with auto functions [OK]
- Confusing data classes with UI components
- Thinking data classes manage app navigation
- Assuming data classes handle threading
Person with properties name (String) and age (Int)?Solution
Step 1: Recall correct data class syntax
The correct syntax starts withdata classfollowed by the class name and constructor parameters.Step 2: Check each option
data class Person(val name: String, val age: Int) matches the correct syntax. Options A, B, and D have wrong order or missing keywords.Final Answer:
data class Person(val name: String, val age: Int) -> Option CQuick Check:
Data class syntax = data class ClassName(params) [OK]
- Omitting the 'data' keyword
- Swapping order of 'class' and 'data'
- Using incorrect parameter syntax
data class Book(val title: String, val author: String)
What will be the output of:
val book1 = Book("Kotlin Basics", "Anna")
val book2 = Book("Kotlin Basics", "Anna")
println(book1 == book2)Solution
Step 1: Understand equality in data classes
Data classes automatically generateequals()to compare property values, so two objects with same data are equal.Step 2: Evaluate the code
Bothbook1andbook2have identicaltitleandauthor, sobook1 == book2returnstrue.Final Answer:
true -> Option DQuick Check:
Data class equality compares properties = true [OK]
- Thinking '==' compares references, not values
- Expecting false because objects are different instances
- Confusing with regular class equality
data class User(val name: String, var age: Int) {
fun copyWithNewAge(newAge: Int): User {
return copy(age = newAge)
}
}Solution
Step 1: Understand the
Kotlin automatically generates acopyfunction in data classescopyfunction for data classes to create modified copies.Step 2: Check usage inside the class
Usingcopyinside the class is valid and common to create new instances with changed properties.Final Answer:
The copy function is automatically generated and can be used here -> Option AQuick Check:
copy() is auto-generated and usable inside data class [OK]
- Thinking copy() is unavailable inside the class
- Believing data classes cannot have functions
- Assuming var properties are disallowed
Employee with properties id (Int), name (String), and department (String). You also want to exclude department from the automatically generated equals() and hashCode() methods because it can change often. How can you achieve this?Solution
Step 1: Understand how data classes generate equals and hashCode
Only properties declared in the primary constructor are used inequals()andhashCode().Step 2: Exclude a property by declaring it outside the constructor
Declaringdepartmentinside the class body excludes it from these methods.Final Answer:
Use data class Employee(val id: Int, val name: String) and add var department: String inside the class body -> Option BQuick Check:
Only constructor properties affect equals/hashCode [OK]
- Assuming @Transient excludes from equals/hashCode
- Trying to exclude constructor properties directly
- Believing all properties must be in constructor
Ready to prove it?
Pass the test and this pattern moves unknown
