getterSetter
data class User(val name: String, val age: Int)์ฝํ๋ฆฐ์์ ๋ฐ์ดํฐ ํด๋์ค๋ ์์๋ก, ์์ ๊ฐ์ด ๋ฐ์ดํฐ ํด๋์ค๋ฅผ ์ ์ธํ์ ๋ ์ ์ธ๋ ์์ฑ์๋ฅผ ํตํด์ ๋ค์ ๋ฉค๋ฒ๋ค์ deriveํด์ค๋ค.
- equals()
- hashcode()
- toString()
- componentN()
- copy()(equals(), hashcode()๋ hashcoded.md๋ฅผ ์ฐธ๊ณ )
toString์ด derive๋์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. class๋ฅผ printํด๋ณด๊ณ data class๋ฅผ ํ๋ฆฐํธํด๋ณด๋ฉด class๋ ์ฃผ์๊ฐ์ด ์ถ๋ ฅ๋๊ณ , data class๋ toString()์ ์ด์ฉํ ์คํธ๋ง๊ฐ์ด ์ถ๋ ฅ๋๋ค.
class ์ฌ์ฉ
fun main(args: Array<String>) {
val c = Test("yap",10)
println(c)
}
class Test(
var a: String,
var b: Long
){
}์ถ๋ ฅ๊ฐ
Test@31221be2data class ์ฌ์ฉ
fun main(args: Array<String>) {
val c = Test("yap",10)
println(c)
}
data class Test(
var a: String,
var b: Long
){
}์ถ๋ ฅ๊ฐ
Test(a=yap, b=10)์ด๋ ๊ฒ ์ถ๋ ฅ๋๋ค.
๋ํ, ์ด๋ฌํ "Test(a=yap, b=10)"๊ฐ์ ์คํธ๋ง์ด ์๋๋ผ, {"a":"yap", "b":"10"} ์ด๋ ๊ฒ objectํํ๋ก ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด jackson์ objectmapper๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
val requestJson = objectMapper.writeValueAsString() // ์คํธ๋ง ์๋ฃํ์ JSON์ถ๋ ฅ
val jsonSend = JSONParser().parse(requestJson) as JSONObject // ์คํธ๋ง ์๋ฃํ์ json์ JSONObject ์๋ฃํ์ผ๋ก ๋ณ๊ฒฝ
objectMapper.convertValue(jsonSend, className) // JSONObject๋ฅผ className์ ํด๋นํ๋ ํด๋์ค ํ์
์ผ๋ก ๋ณ๊ฒฝGetter, Setter
์ด์ getter, setter๋ฅผ ์ดํด๋ณด์. data class์์ getter์ setter๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ ์์๊น?
fun main(args: Array<String>) {
val c = Test("yap",10)
c.a="yes"
println(c)
}
data class Test(
var a: String,
var b: Long
){
}์ถ๋ ฅ๊ฐ
Test(a=yes, b=10)data class๋ฅผ ์ด๋ ๊ฒ ์ ์ธํ๋ฉด getter, setter๊ฐ ๋ชจ๋ ํ์ฑํ๋๋ค. Test์์ฑ์์์ ๋ณ์๋ฅผ var๋ก ์ ์ธํด์ ์๋ก์ด ๊ฐ ํ ๋น์ด ๊ฐ๋ฅํ๊ณ , ๋ณ์ ์ ์ธ์ ์ ๊ทผ ์ ํ์๋ฅผ ๋ถ์ด์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก public ์ ๊ทผ ์ ํ์๊ฐ ๋ถ์ด ์๋ ๊ฒ๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค. (์ฝํ๋ฆฐ์ val, var์ ๋ง์น ์๋ฐ์คํฌ๋ฆฝํธ์ const, let๊ณผ ๊ฐ๋ค.)
์ฝํ๋ฆฐ์์๋ ์ (.)ํ๊ธฐ๋ฒ์ผ๋ก getter์ setter๋ฅผ ์ฌ์ฉํ๋ค. ์๋ฐ์ฒ๋ผ getName(), setName() ๊ฐ์ ๋ฉ์๋๋ฅผ ๋ง๋ค ํ์ ์์ด instance.name ์ฒ๋ผ ์ฐ๋ฉด ์ฝํ๋ฆฐ ๋ด๋ถ์ ์ผ๋ก getter, setter๋ฅผ ๋ง๋ค์ด ์ฒ๋ฆฌํด์ค๋ค๋ ๊ฒ์ด๋ค.
(์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฏ๋ก ์ฝํ๋ฆฐ์์์ getter์ setter์ ํํ๋ ๊ฐ๋ค. ์๋ ์ฝ๋์์ c.a๋ฅผ ๊ทธ๋ฅ ์ฌ์ฉํ๋ฉด getter์ด๊ณ , c.a์ ๊ฐ์ ํ ๋นํ๋ฉด setter๊ฐ ๋๋ ๊ฒ์ด๋ค.)
์ด์ getter, setter๋ฅผ ์ ํํด๋ณด์.
์๋ ์ฝ๋์ ๊ฐ์ด ๋ณ์๋ฅผ val์ผ๋ก ์ ์ธํ๋ฉด setter๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค. ๊ทผ๋ฐ ๋ฌธ์ ๋ val์ด๋ฏ๋ก data class๋ด๋ถ์์๋ ๊ฐ์ ๋ฐ๊ฟ ์๊ฐ ์๋ค. ๋ํ ์์ง ์ ๊ทผ ์ ํ์๊ฐ public์ด๋ฏ๋ก getter๋ ์ฌ์ฉํ ์ ์๋ค.
fun main(args: Array<String>) {
val c = Test("yap",10)
c.a="yes"
println(c)
}
data class Test(
val a: String,
var b: Long
){
}์ถ๋ ฅ๊ฐ
{error...}์ด๋ ๊ฒ ๋๋ฉด ํ ๋ฒ ์์ฑํ ์ธ์คํด์ค์ ๋ฉค๋ฒ๋ค์ ๋ฐ๊ฟ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ผ์ ๊ฐ์ ๋ฐ๊ฟ ์ ์๊ฒ ์ค์ ํ๋ ค๋ฉด ๊ฒฐ๊ตญ var์ ์ ์ธํด์ผ ํ๋ค.
fun main(args: Array<String>) {
val c = Test("yap",10)
c.jump()
println(c)
}
data class Test(
private var a: String,
var b: Long
){
fun jump(){
this.a="power"
}
}var a ์ ์ธ์ผ๋ก ๊ฐ์ ๋ฐ๊ฟ ์ ์๊ฒ ์ค์ ํ๊ณ , private๋ก ๋ด๋ถ์์๋ง ๊ฐ์ ๋ฐ๊ฟ ์ ์๊ฒ ํ๋ค. ์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด setter๋ฅผ ์ฌ์ฉ์ ํํ ์ ์๋ค. ๊ทผ๋ฐ ์๋ก ์๊ธด ๋ฌธ์ ๋ ์ฌ๊ธฐ์์ aํ๋์ ๋ํด private๋ฅผ ์ ์ธํ์ผ๋ฏ๋ก getter๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
๋ ์์๋ณด๊ณ ์ถ๋ค๋ฉด kotlin entity์์ setter๋ฅผ ๋ง์ ์ ์์๊น๋ฅผ ์ฝ์ด๋ณด์.
Custom Getter, Setter
์ฝํ๋ฆฐ์์๋ getter, setter๋ฅผ ์ํ๋๋๋ก ์ปค์คํ ํ ์๋ ์๋ค.
class User(_id: Int, _name: String, _age: Int){
val id: Int = _id
get() = field
var name: String = _name
get() = field
set(value){
field = value
}
var age: Int = _age
get() = field
set(value){
field = value
}
}
fun main(){
val user1 = User(1, "Ingkells", 20)
user1.age = 35
println("user1.age = ${user1.age}")
}์๋ get(), set()์ ๊ธฐ๋ณธ ํํ๋ฅผ ์ปค์คํ getter, setter๋ก ๋ง๋ค๋ฉด ์ด๋ป๊ฒ ๋๋์ง ๋ณด์ฌ์ค ๊ฒ์ด๋ค. ์ฆ, ์ ์ฝ๋์์๋ get(), set()์ ๊ตณ์ด ์ ์ธํ์ง ์์๋ ์ฝํ๋ฆฐ ๋ด๋ถ์ ์ผ๋ก getter, setter๋ฅผ ๋ง๋ค์ด ์ฒ๋ฆฌํด์ค๋ค๋ ๊ฒ์ด๋ค.
ํ๋กํผํฐ๋ฅผ var๋ก ์ ์ธํ๋ ๊ฒฝ์ฐ get(), set()์ ํตํ getter, setter๋ฅผ ๋ง๋ค ์ ์๊ณ , ํ๋กํผํฐ๋ฅผ val๋ก ์ ์ธํ๋ ๊ฒฝ์ฐ get()์ ํตํ getter๋ฅผ ๋ง๋ค ์ ์๋ค.
์์์ get(), set()์ field์ value๊ฐ ์ฌ์ฉ๋์๋๋ฐ, ์ด๋ ์์ฝ์ด์ด๋ฏ๋ก ๊ธฐ์ตํด๋๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
์ปค์คํ getter, setter๋ฅผ ์ฌ์ฉํ๋ฉด getํ ๋ field.toUpperCase()๋ฅผ ์ฌ์ฉํด์ ์๋ฌธ์๊ฐ ์๋ ๋๋ฌธ์๋ก get์ด ๊ฐ๋ฅํ๊ฒ ๋๋ ๋ฑ ํธ์์ฑ์ด ์ฆ์ง๋ ์๋ ์๋ค.
์ ๋ฆฌํ๋ฉด ์๋ฐ์ getter, setter์ ์ฝํ๋ฆฐ์ getter, setter๋ฅผ ๋น๊ตํ์ ๋ ์ฐจ์ด์ ์ ์๋ฐ๋ setName(), getName()์ด๋ ๊ฒ set, get์ ์จ์ฃผ์ด ๋ช ์์ ์ผ๋ก ์ฌ์ฉํ์ง๋ง ์ฝํ๋ฆฐ์ getter, setter ๋ชจ๋ instance.name ๊ฐ์ ํํ๋ก ์ฌ์ฉํ๋ค๋ ์ ์ด๋ค.
Last updated