zak.taccardi
11/03/2022, 3:36 AMinterface Validatable {
fun validate()
}
class Impl() :
// both these extend `Validatable`
Validatable1 by Validatable1.Impl(),
Validatable2 by Validatable2.Impl(),
Validatable {
override fun validate() {
// how do I call:
// validatable1.validate()
// validatable2.validate()
// or bonus - can I access the `Validatable1.Impl()` instance at all?
}
}
ephemient
11/03/2022, 3:58 AMclass Impl(
val validatable1: Validatable1,
val validatable2: Validatable2,
) : Validatable1 by validatable1, Validatable2 by validatable2 {
constructor() : this(
validatable1 = Validatable1.Impl(),
validatable2 = Validatable2.Impl(),
)
override fun validate() {
validatable1.validate()
validatable2.validate()
}
}
ephemient
11/03/2022, 4:08 AMsuper<T>.function()
syntax that is already available for choosing between default implementations coming from multiple interfaces, but it doesn't look like it's gotten any attention https://youtrack.jetbrains.com/issue/KT-7786/Make-it-possible-to-call-method-from-delegate-using-superMyDelegateInterface-qualifieraishwaryabhishek3
11/03/2022, 5:09 AM