[Kotlin] Data class
If we want to use Class to represent a piece of data such as Object, we can use Data class instead of normal class.
Difference: Data class has better toString() fun:
class Book (val title: String, val author: String, val publicationYear: Int, var price: Double) {} data class DataBook(val title: String, val author: String, val publicationYear: Int, var price: Double) {} fun main() { var book = Book("Super book", "John Doe", 2014, 99.09) var dataBook = DataBook("Super Book", "John Doe", 2014, 99.09) println(book) // Book@5451c3a8 println(dataBook) // DataBook(title=Super Book, author=John Doe, publicationYear=2014, price=99.09) }
Of course, we can override toString() fun in Book class, but DataClass already taken care for us.
Secondly, data class has better equals check:
class Book (val title: String, val author: String, val publicationYear: Int, var price: Double) {} data class DataBook(val title: String, val author: String, val publicationYear: Int, var price: Double) {} fun main() { var book = Book("Super book", "John Doe", 2014, 99.09) var book2 = Book("Super book", "John Doe", 2014, 99.09) var dataBook = DataBook("Super Book", "John Doe", 2014, 99.09) var dataBook2 = DataBook("Super Book", "John Doe", 2014, 99.09) println(book) // Book@5451c3a8 println(dataBook) // DataBook(title=Super Book, author=John Doe, publicationYear=2014, price=99.09) println(book.equals(book2)) // false println(dataBook.equals(dataBook2)) // true }
Useful copy() method:
var dataBook3 = dataBook.copy() // copy the same data var dataBook4 = dataBook.copy(price=89) // copy with modification
Destructing:
var (title, author, year, price) = dataBook
hashSet: (no repeat items)
var setBooks = hashSetOf(dataBook, dataBook3)
分类:
Kotlin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-10-12 [Bash] Move and Copy Files and Folders with Bash
2018-10-12 [Bash] Create nested folder in Bash
2018-10-12 [Bash] View Files and Folders in Bash
2017-10-12 [Express] Upload Files with Express
2017-10-12 [Python] List & Object spread in Python
2017-10-12 [Angular & Unit Testing] Testing a RouterOutlet component
2016-10-12 [Debug] Use Snippets to Store Behaviors in Chrome DevTools