[Kotlin] DataClass

Android (Kotlin) 2020. 9. 14. 22:29

1. 데이터 클래스 기능

equals() 
hashCode()
toString()
componentN()
copy()

data class Book(
	var name: String, 
    var authorName: String = "dudu", 
    var lastModified: Long = 1234567, 
    var rating: Float = 5f, 
    var downloads: Int = 1000
    )

fun main(args: Array<String>) {
	var book = Book("Android tutorials","Hup..", 1234567, 4.5f, 1000)

    	book = Book("Kotlin")
    	book = Book("Swift",downloads = 500)
    	book = Book("Java","zzz",rating = 5f, downloads = 1000)
    	book = Book("Python","YYY",rating = 5f)
        println(book.toString())
    val newBook = book.copy(name = "iOS dev")
    println("Hashcode is ${newBook.hashCode()}")
    if(!newBook.equals(book))
        println("newBook and book are NOT equal")
        
    println(book.component1()) //Python
    println(book.component2()) //YYY
    println(book.component3()) //1234567
    println(book.component4()) //5f
    println(book.component5()) //1000    
}
// 변수 이름을 사용하면 원하는 값만 선택적으로 입력 가능 하다. 
// toString()함수는 클래스의 값을 출력 한다.
// copy() 는 원하는 값만 변경하여 새로운 val 객채를 만들 수 있다.
// hashCode() 헤시코드를 반환 함.
// equals() " == " 과 같음.
// omponent(n) 생성자에 명시된 순서(n)에 맞는 개체로 접근

2. Destructuring

data class Book(val name: String, val authorName: String = "kaka", val lastModified: Long = 1234567, val rating: Float = 5f, val downloads: Int = 1000)

 val book = Book("Android tutorials","dudu", 1234567, 4.5f, 1000)
 val (n,a,date,rating,downloads) = book
 
 ==> 
 n = "Android tutorials"
 a = "dudu"
 date = 1234566
 rating = 4.5f
 downloads = 1000

equals() 
hashCode()
toString()
componentN()
copy()

설정

트랙백

댓글