Császár Ákos
02/06/2024, 7:45 AMdiamond problem
.
//module 1
interface CommonCore {
fun doFoo(){
foo()
}
fun foo() {
println("foo in CommonCore")
}
}
interface AndroidCore: CommonCore {
override fun foo() {
super.foo()
println("foo in AndroidCore")
}
}
//module 2
interface Common: CommonCore {
override fun foo() {
super.foo()
println("foo in Common")
}
}
class Android: AndroidCore, Common {
override fun foo() {
super<AndroidCore>.foo() //common core will be called twice...
super<Common>.foo()
println("foo in Android")
}
}
fun main() {
Android().doFoo()
}
With this approach CommonCore.foo()
will be called twice which of course is not ideal.
What do you guys do, to avoid it?Jan Holešovský
02/06/2024, 8:03 AMJan Holešovský
02/06/2024, 8:08 AMCsászár Ákos
02/06/2024, 8:21 AMJan Holešovský
02/06/2024, 8:28 AMJan Holešovský
02/06/2024, 8:29 AMJan Holešovský
02/06/2024, 8:31 AMJan Holešovský
02/06/2024, 8:35 AMCsászár Ákos
02/06/2024, 8:37 AMCsászár Ákos
02/06/2024, 8:38 AMJan Holešovský
02/06/2024, 8:39 AM