I have two modules defines like this:
interface Module {
val parameter: JSONObject
}
abstract class FirstModule: Module {
abstract val message: Message
}
....
// many more Modules
I created a base listener interface for Module
and another for FirstModule
:
fun interface ModuleListener {
fun ready(module: Module)
}
fun interface FirstModuleListener: ModuleListener {
fun ready(module : FirstModule)
override fun ready(module: Module) {
ready(module as FirstModule)
}
}
assuming there is a function named firstModule()
like this:
fun firstModule(listener: FirstModuleListener)
In KOTLIN
when I call firstModule()
things work as expected (to let user only override ready()
with FirstModule
as parameter:
firstModule ( object: FirstModuleListener {
override fun ready(module: FirstModule) {
Log.v(TAG, "module: $module)
}
}
}
but the same is behaving differently in JAVA
. It is expecting user to override both the interface methods even when one of them is already overridden and has some content in child interface.
firstModule(new FirstModuleListener() {
@Override public void ready(Module module) { }
@Override public void ready(FirstModule module) {}
}
How can I skip the first overridden method call in Java. Is it causing due to the method definition support in Kotlin and not in Java?