[kotlin] 프로퍼티 대리자의 사용법

프로퍼티 대리자는 코틀린의 강력한 기능 중 하나로, 코드를 재사용하고 중복을 최소화할 수 있게 해줍니다. 프로퍼티 대리자를 사용하면 코드의 가독성을 높이고 유지보수를 용이하게 할 수 있습니다.

프로퍼티 대리자란?

프로퍼티 대리자는 getter와 setter 메서드 호출을 다른 객체에 위임할 수 있는 강력한 기능입니다. 이를 통해 프로퍼티에 대한 접근을 제어하고, 값을 변경하기 전에 추가적인 로직을 수행할 수 있습니다.

사용법

프로퍼티 대리자를 사용하려면, 이미 구현된 프로퍼티에 대해 getter와 setter 메서드 호출을 대리해주는 클래스를 작성해야 합니다. 이때, by 키워드를 사용하여 프로퍼티에 대리자를 할당합니다.

다음은 프로퍼티 대리자를 사용한 예제입니다.

class Example {
    var property: String by Delegate()
}

class Delegate {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
        return "getter가 호출됨"
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
        println("$value 가 setter에 전달됨")
    }
}

fun main() {
    val ex = Example()
    println(ex.property) // "getter가 호출됨"
    ex.property = "ABC" // "ABC 가 setter에 전달됨"
}

위 예제에서 property 프로퍼티는 Delegate 클래스에 getter와 setter 메서드 호출을 위임했습니다.

프로퍼티 대리자의 종류

코틀린에서는 프로퍼티 대리자의 종류로 Observable, NotNull, Vetoable 등이 내장되어 있습니다.

프로퍼티 대리자를 직접 작성할 수도 있으며, 코틀린에서 제공하는 기본 대리자 이외에도 사용자 정의 대리자를 구현하여 프로퍼티에 적용할 수 있습니다.

프로퍼티 대리자는 코틀린의 강력한 기능 중 하나로, 코드의 재사용성을 높이고 가독성을 향상시키는데 큰 도움을 줍니다.

참고 자료