Quick actions

cmd+k|ctrl+k

Navigation

Languages

Property Delegation

Snippet info

Language

Kotlin

Visibility

public

Author

habib17

Created

2019-11-04T04:05:29Z

Updated

2019-11-04T04:05:29Z

import kotlin.reflect.KProperty
fun main(args : Array<String>){
    val animal = Animal()
    animal.name = "okee"
    println("Nama Hewan: ${animal.name}")
    
    val person = Person()
    person.name = "Habib"
    println("Nama Orang: ${person.name}")
    
    val hero = Hero()
    hero.name = "GatotKaca"
    println("Nama Pahlawan: ${hero.name}")
}

class DelegateName{
    private var value: String = "Default"
    
    operator fun getValue(classRef: Any?, property: KProperty<*>): String{
        println("Fungsi ini sama sepertu getter untuk properti ${property.name} pada $classRef")
        return value
    }
    
    operator fun setValue(classRef: Any?, property: KProperty<*>, newValue: String){
        println("Fungsi ini sama seperti setter untuk property ${property.name} pada class $classRef")
        println("Nilai ${property.name} dari : $value akan berubah menjadi $newValue")
        value = newValue
        
    }
}

class Animal{
    var name: String by DelegateName()
}

class Person{
    var name: String by DelegateName()
}

class Hero{
    var name: String by DelegateName()
}
INFO