I'm trying to extend, in Java, a Kotlin delegating class and get the following error:
Cannot inherit from final 'Derived'
See code below.
What I'm trying to do is decorate a method of a class.
Any idea why Kotlin defined Derived
as final? Is there a way for Derived
to not be final so I can inherit it?
Java:
new Derived(new BaseImpl(10)) { // Getting the error on this line: `Cannot inherit from final 'Derived'`
};
Kotlin:
interface Base {
fun print()
}
class BaseImpl(val x: Int) : Base {
override fun print() { print(x) }
}
class Derived(b: Base) : Base by b
* Example from here: https://kotlinlang.org/docs/reference/delegation.html