[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
등이 내장되어 있습니다.
Observable
은 프로퍼티 값이 변경될 때 알림을 받을 수 있습니다.NotNull
은 항상 null이 아닌 값을 포함해야 하는 프로퍼티에 대한 검사를 수행합니다.Vetoable
은 새로운 값이 할당될 때 조건을 검사하여 변경을 허용하거나 거부할 수 있습니다.
프로퍼티 대리자를 직접 작성할 수도 있으며, 코틀린에서 제공하는 기본 대리자 이외에도 사용자 정의 대리자를 구현하여 프로퍼티에 적용할 수 있습니다.
프로퍼티 대리자는 코틀린의 강력한 기능 중 하나로, 코드의 재사용성을 높이고 가독성을 향상시키는데 큰 도움을 줍니다.