optimization of delegates by val property
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
trait IActing {
|
||||
fun act(): String
|
||||
}
|
||||
|
||||
class CActing(val value: String = "OK"): IActing {
|
||||
override fun act(): String = value
|
||||
}
|
||||
|
||||
// final so no need in delegate field
|
||||
class Test(val acting: CActing = CActing()): IActing by acting {
|
||||
}
|
||||
|
||||
// even if open so we don't need delegate field
|
||||
open class Test2(open val acting: CActing = CActing()): IActing by acting {
|
||||
}
|
||||
|
||||
// even if open the backing field is final, so we don't need delegate field
|
||||
class Test3() : Test2() {
|
||||
override val acting = CActing("OKOK")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val test = Test()
|
||||
return test.act()
|
||||
}
|
||||
Reference in New Issue
Block a user