반응형
1. observerble
단어 그대로, 특정 프로퍼티를 관찰하고 있다가 값이 바뀌면, 무엇인가 일어나게 만드는 방법
class User {
var name:String by Delegates.observable(""){
property, oldValue, newValue ->
println("기존값: ${oldValue}, 새로적용될 값: ${newValue}")
}
}
@Test
fun testUserNameObservable() {
val user = User()
user.name = "John"
user.name = "James"
}
기존값: , 새로적용될 값: John
기존값: John, 새로적용될 값: James
2. map
예전 Spring ( boot 말고 ) 시절에, VO 객체의 필드가 너무 많아질때, map 하나 선언해서 모든 값을 관리 했는데,
kotlin 에서는 프로퍼티 위임이라는 말로 쉽게 구현 가능
class Animal(val map:MutableMap<String, Any?>) { // 생성자 및 할당 선언
var name:String by map // by 키워드로 프로퍼티 위임
var age:Int by map
}
@Test
fun testAnimalByMap() {
val animal = Animal(mutableMapOf(
"name" to "cat", // to 를 써서 할당 한다.
"age" to 20
))
Assert.assertEquals("cat", animal.name)
Assert.assertEquals(20, animal.age)
animal.name = "dog"
animal.age = 21
Assert.assertEquals("dog", animal.map["name"]) //접근시에 map 변수에 직접 key로 가능
Assert.assertEquals(21, animal.map["age"])
}
kotlin 을 쓰지 않고 Java21 로 충분해! 로 버틸려고 했지만,
Android 개발을 하면, kotlin 을 피할 수 없나보다...
반응형