[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)

 

posted @   Zhentiw  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· 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
点击右上角即可分享
微信分享提示