Kotlin

Custom Property Delegate

admin by @admin ADMIN
just now
Jun 1, 2026
Public
0 0 up · 0 down Sign in to vote
Any object with `getValue` / `setValue` operator methods can serve as a delegate. Lets you encapsulate cross-cutting behavior (logging, persistence, validation).
Kotlin
Raw
import kotlin.reflect.KProperty

// Custom delegate that logs every read + write
class LoggingProperty<T>(private var value: T) {
    operator fun getValue(thisRef: Any?, property: KProperty<*>): T {
        println("[GET ${property.name}] → $value")
        return value
    }
    operator fun setValue(thisRef: Any?, property: KProperty<*>, new: T) {
        println("[SET ${property.name}] $value → $new")
        value = new
    }
}

class User {
    var name: String by LoggingProperty("anonymous")
    var age:  Int    by LoggingProperty(0)
}

fun main() {
    val u = User()
    u.name = "Alice"          // [SET name] anonymous → Alice
    println(u.age)            // [GET age] → 0
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.