30 lines
739 B
Kotlin
Vendored
30 lines
739 B
Kotlin
Vendored
// Container
|
|
import kotlin.reflect.KProperty
|
|
|
|
class Container {
|
|
companion object {
|
|
fun <R> delegate(): Delegate<R> = null!!
|
|
}
|
|
|
|
interface Delegate<R> {
|
|
operator fun getValue(thisRef: Any?, property: KProperty<*>): R = null!!
|
|
|
|
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: R) {
|
|
}
|
|
}
|
|
|
|
abstract class Base {
|
|
val a: String by delegate()
|
|
var mutable: String? by delegate()
|
|
open val b: String by delegate()
|
|
open val c: String = ""
|
|
abstract val d: String
|
|
}
|
|
|
|
class Derived : Base() {
|
|
override val b: String by delegate()
|
|
override val c: String by delegate()
|
|
override val d: String by delegate()
|
|
}
|
|
}
|