본문 바로가기
IT/kotlin

Android 에서 잘 쓰이는 프로퍼티 위임 observable, map

by 가능성1g 2025. 5. 12.
반응형

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 을 피할 수 없나보다...

반응형