Kotlin
μμ λ°μ΄ν°μ μ§ν©μ ννν λ μ¬μ©λλ Class
final class
μ΄κΈ° λλ¬Έμ μμμ νμ©νμ§ μλλ€.Data Class
λ μ»΄νμΌλ ννλ₯Ό 보면 μΌλ° class
μμ μ°¨μ΄λ₯Ό μ μ μλ€.
data class Person(
val name: String,
val age: Int
)
μΌλ° ν΄λμ€μμ μ°¨μ΄μ μ componentN
, copy
, equals
, hashCode
, toString
λ©μλκ° μ€λ²λΌμ΄λ λ λ€. κ° λ©μλμ μν μ μμ보μ
componentN
data class Person(
val name: String,
val age: Int,
)
fun main(){
val person = Person("Chan", 99)
println(person.component1())
println(person.component2())
}
// chan
// 99
componentN
ν¨μλ μ μΈλ μ£Ό μμ±μμ νλΌλ―Έν° κ°μλ§νΌ μλ μμ±λλ€.data class
κ° κ°μ§λ νλ‘νΌν° κ°μμ λ°λΌ component1()
, component2()
, ..., componentN()
μ΄ μλμΌλ‘ λ§λ€μ΄μ§λ€.data class Person(
val name: String,
val age: Int,
val nickName: String,
val nickName1: String,
val nickName2: String,
val nickName3: String,
val nickName4: String,
)
// compile
public final data class Person public constructor(name: kotlin.String, age: kotlin.Int, nickName: kotlin.String, nickName1: kotlin.String, nickName2: kotlin.String, nickName3: kotlin.String, nickName4: kotlin.String) {
public final val name: kotlin.String /* compiled code */
public final val age: kotlin.Int /* compiled code */
public final val nickName: kotlin.String /* compiled code */
public final val nickName1: kotlin.String /* compiled code */
public final val nickName2: kotlin.String /* compiled code */
public final val nickName3: kotlin.String /* compiled code */
public final val nickName4: kotlin.String /* compiled code */
public final operator fun component1(): kotlin.String { /* compiled code */ }
public final operator fun component2(): kotlin.Int { /* compiled code */ }
public final operator fun component3(): kotlin.String { /* compiled code */ }
public final operator fun component4(): kotlin.String { /* compiled code */ }
public final operator fun component5(): kotlin.String { /* compiled code */ }
public final operator fun component6(): kotlin.String { /* compiled code */ }
public final operator fun component7(): kotlin.String { /* compiled code */ }
public final fun copy(name: kotlin.String = COMPILED_CODE, age: kotlin.Int = COMPILED_CODE, nickName: kotlin.String = COMPILED_CODE, nickName1: kotlin.String = COMPILED_CODE, nickName2: kotlin.String = COMPILED_CODE, nickName3: kotlin.String = COMPILED_CODE, nickName4: kotlin.String = COMPILED_CODE): Person { /* compiled code */ }
public open operator fun equals(other: kotlin.Any?): kotlin.Boolean { /* compiled code */ }
public open fun hashCode(): kotlin.Int { /* compiled code */ }
public open fun toString(): kotlin.String { /* compiled code */ }
}
toString
data class
μ νλ‘νΌν° μΆλ ₯ ννλ₯Ό μ¬μ μ ν μ μλ€.
data class Person(
val name: String,
val age: Int,
){
override fun toString(): String {
return "μ΄λ¦μ $name λμ΄λ $age μ
λλ€."
}
}
fun main(){
val person = Person("Chan", 99)
print(person.toString())
}
//μ΄λ¦μ Chan λμ΄λ 99 μ
λλ€.
Copy
shallow copy
ν κ°μ²΄λ₯Ό λ§λ λ€.