728x90
Data Class
- λ°μ΄ν°λ₯Ό λ€λ£¨λ λ°μ μ΅μ νλ ν΄λμ€μ΄λ€.
- 5κ°μ§ κΈ°λ₯μ λ΄λΆμ μΌλ‘ μλμΌλ‘ μμ±ν΄μ€λ€.
- equals()
- λ΄μ©μ λμΌμ±μ νλ¨νλ€.
- hashcode()
- ν΄λμ€μ λ΄μ©μμ κ³ μ μ ν΄μ¬μ½λλ₯Ό λ°νν΄μ€λ€.
- κ°μ²΄μ λ΄μ©μμ κ³ μ ν μ½λλ₯Ό μμ±νλ€.
- toString()
- ν¬ν¨λ μμ±μ 보기μ½κ² λνλΈλ€.
- copy()
- κ°μ²΄λ₯Ό 볡μ¬νμ¬ λκ°μ λ΄μ©μ μ κ°μ²΄λ₯Ό λ§λ λ€.
- copy() ν¨μλ₯Ό μ΄μ©ν΄ μ κ°μ²΄λ₯Ό μμ±ν λλ λκ°μ λ΄μ©μ κ°μ²΄λ₯Ό μμ±ν μλ μμ§λ§ μμ±μμ λκ°μ ννμ νλΌλ―Έν°λ₯Ό μ£Όμ΄ μΌλΆ μμ±μ λ³κ²½ν΄ μ€ μλ μλ€.
- μ무 νλΌλ―Έν°κ° μμΌλ©΄ λκ°μ λ΄μ©μΌλ‘ μμ±νλ€.
- νλΌλ―Έν°κ° μλ€λ©΄ ν΄λΉ νλΌλ―Έν°λ₯Ό κ΅μ²΄νμ¬ μμ±νλ€.
- componentX()
- μμ±μ μμλλ‘ λ°ννλ€.
- component1(), component2() μκ°μ΄ μμ±μ λ°ννλ€.
- μ¬μ©μκ° μ§μ νΈμΆνκΈ° μν ν¨μκ° μλ λ°°μ΄μ΄λ 리μ€νΈ λ±μ λ°μ΄ν° ν΄λμ€ κ°μ²΄κ° λ΄κ²¨μμλ μ΄ λ΄μ©μ μλμΌλ‘ κΊΌλ΄ μΈ μ μλ κΈ°λ₯μ μ§μνκΈ° μν ν¨μλ€.
- equals()
Data("A", 7) // Aλ component1(), 7μ component2()κ°μ ν¨μλ‘ μμ±μ λ΄μ©μ λ°ννλ€.
μμ
fun main(){
val a = General("νμΈ", 212)
println(a == General("νμΈ", 212))
println(a.hashCode())
println(a)
val b = Data("μ μ§", 111)
println(b == Data("μ μ§", 111))
println(b.hashCode())
println(b)
println(b.copy())
println(b.copy("νμ"))
println(b.copy(id = 888))
}
class General(val name: String, val id: Int)
data class Data(val name: String, val id: Int)
false
2061475679
General@7adf9f5f
true
50589259
Data(name=μ μ§, id=111)
Data(name=μ μ§, id=111)
Data(name=νμ, id=111)
Data(name=μ μ§, id=888)
μΌλ° ν΄λμ€λ‘ λ§λ aλ equals()λ hashCode(), toString()ν¨μμ κ²°κ³Όκ° μ λλ‘ κ΅¬νλμ§ μμλ€.
νμ§λ§ λ°μ΄ν° ν΄λμ€λ‘ λ§λ bλ equalas(), hashCode(), toString, copy() ν¨μ€μ κ²°κ³Όκ° μλ―Έμλ κΈ°λ₯μΌλ‘ μλꡬν λμ΄ μλ€.
componentX() μμ
fun main(){
val list = listOf(Data("νμΈ", 212),
Data("μ μ§", 111),
Data("νμ", 888))
for((a, b) in list){
println("$a, $b")
}
}
class General(val name: String, val id: Int)
data class Data(val name: String, val id: Int)
νμΈ, 212
μ μ§, 111
νμ, 888
리μ€νΈμ λ΄κΈ΄ λ°μ΄ν° κ°μ²΄μ λ΄μ©μ λ°λ³΅λ¬Έμμ λͺ¨λ μννλ €λ©΄ λ κ°μ μμ±μ λ°μ μ μ΄λ μ΄λ¦μ μ§μ νμ¬ in μμ μ¨μ£Όλ©΄ λλ€.
μ΄λ κ² νλ©΄ λ΄λΆμ μΌλ‘λ aκ° component1(), bκ° component2()λΌλ ν¨μλ₯Ό μ¬μ©νμ¬ μμλλ‘ κ°μ λΆλ¬μ€κ² λλ€.
Enum Class
- enumerated type(μ΄κ±°ν)μ μ€μλ§μ΄λ€.
- Enum Class λ΄μ μνλ₯Ό ꡬλΆνκΈ° μν κ°μ²΄λ€μ μ΄λ¦μ λΆμ¬ μ¬λ¬κ° μμ±ν΄ λκ³ κ·Έ μ€ νλμ μνλ₯Ό μ ννκ³ λνλ΄κΈ° μν ν΄λμ€ μ΄λ€.
- enum classμμ κ°μ²΄λ€μ κ΄νμ μΌλ‘ μμλ₯Ό λνλΌ λ μ¬μ©νλ λλ¬Έμλ‘ κΈ°μ νλ€.
- enumμ κ°μ²΄λ€μ κ³ μ ν μμ±μ κ°μ§ μ μλ€.
- enumμ μμ±μλ₯Ό λ§λ€μ΄ μμ±μ λ°λλ‘ νλ©΄ κ°μ²΄λ₯Ό μ μΈν λ μμ±μ μ μΈ ν μ μλ€.
- μΌλ° ν΄λμ€μ²λΌ ν¨μλ₯Ό μΆκ°ν μ μλ€.
- κ°μ²΄μ μ μΈμ΄ λλλ μμΉμ μΈλ―Έμ½λ‘ μ μΆκ°ν ν ν¨μλ₯Ό μμ±νλ©΄ λλ€.
fun main(){
Color.RED
}
// νΉμ΄ν ννμ΄μ§λ§ λͺ¨λ enum classμΈ Colorμ κ°μ²΄λ₯Ό μμ±νκΈ° μν μ μΈμ΄λ€.
enum class Color(val number: Int){
RED(1),
BLUE(2),
Green(3);
fun isRed() == this == Color.RED
}
μμ
fun main(){
var state = State.SING // enumμ μ μΈμμ λ§λ κ°μ²΄λ₯Ό μ΄λ¦μΌλ‘ μ°Έμ‘°νμ¬ κ·Έλλ‘ μ¬μ©νλ©΄ λλ€.
println(state)
state = State.SLEEP
println(state.isSleeping())
state = State.EAT
println(state.message)
}
// νΉμ΄ν ννμ΄μ§λ§ λͺ¨λ enum classμΈ Colorμ κ°μ²΄λ₯Ό μμ±νκΈ° μν μ μΈμ΄λ€.
enum class State(val message: String){
SING("λ
Έλ λΆλ₯΄λμ€"),
EAT("λ°₯ λ¨Ήλμ€"),
SLEEP("μ μλμ€");
fun isSleeping() = this == State.SLEEP // μ μλ μ€μΈμ§ booleanκ°μΌλ‘ λ°ννλ ν¨μ
}
SING
true
λ°₯ λ¨Ήλμ€
π‘ data classμ enum classλ μΌλ° ν΄λμ€μμ μ 곡λμ§ μλ νΉμ ν μ©λμ κΈ°λ₯μ μ 곡νλ€.
728x90
'μλλ‘μ΄λπ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ½νλ¦°] 컬λ μ ν¨μ (0) | 2024.07.08 |
---|---|
[μ½νλ¦°] Set & Map (0) | 2024.07.08 |
[μ½νλ¦°] μ€μ²© ν΄λμ€μ λ΄λΆ ν΄λμ€ (0) | 2024.07.07 |
[μ½νλ¦°] ν¨μμ λ€μν κΈ°λ₯ (0) | 2024.07.07 |
[μ½νλ¦°] null μ²΄ν¬ & λ³μ λμΌμ± μ²΄ν¬ (0) | 2024.07.03 |