Vitali Plagov
07/25/2022, 7:51 AMopen class Parent {
fun load() {
return ... // don't know what to return here
}
}
class ChildA : Parent () {
fun methodA() = ...
}
class ChildB : Parent () {
fun methodB() = ...
}
class Usage {
fun fooA() {
ChildA().load().methodA() // I want to achieve this chaining
}
fun fooA() {
ChildB().load().methodB()
}
}
load()
method from parent for both childs, but then continue with child’s members and methodsdmitriy.novozhilov
07/25/2022, 9:20 AMabstract class Parent<T : Parent<T>> {
abstract fun load(): T
}
class ChildA : Parent<ChildA> () {
override fun load(): ChildA = TODO()
fun methodA(): Int = TODO()
}
class ChildB : Parent<ChildB> () {
override fun load(): ChildB = TODO()
fun methodB(): Int = TODO()
}
class Usage {
fun fooA() {
ChildA().load().methodA()
}
fun fooB() {
ChildB().load().methodB()
}
}