zoukankan      html  css  js  c++  java
  • [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)
  • 相关阅读:
    gson Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path
    angularjs-$interval使用
    angularjs的页面拆分思想
    桌面工具的分享
    怎么理解高内聚低耦合
    sqlserver 还原数据库
    Sqlserver 读取EXCEL
    Search everything 使用说明
    根据文件大小搜索电脑文件
    一个不错的录屏的软件的分享
  • 原文地址:https://www.cnblogs.com/Answer1215/p/13802897.html
Copyright © 2011-2022 走看看