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)
  • 相关阅读:
    二项队列
    左式堆
    优先级队列
    web.xml配置文件中<async-supported>true</async-supported>报错的解决方案
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
    spring四种依赖注入方式
    Spring @Resource、@Autowired、@Qualifier的注解注入及区别
    CXF自动生成客户端
    maven update 以后报错。
    Mavne + Spring整合CXF
  • 原文地址:https://www.cnblogs.com/Answer1215/p/13802897.html
Copyright © 2011-2022 走看看