Проблема компилятора Kotlin с переопределением конечной функции Java в Kotlin
Я имею дело со следующей проблемой с компилятором Kotlin/Java. Представьте себе следующий сценарий: пустьFirst
быть классом Java с последней функцией и Second
быть классом Kotlin, расширяющим First
с функцией с таким же именем, как последняя функция в First
класс, пример:
// Java class
class First {
final void foo() { }
}
// Kotlin class
class Second: First() {
fun foo() { }
}
Очевидно, это неправильно, потому что последняя функция foo()
не может быть отменено. Однако компиляция проходит успешно, и во время выполнения я получаюjava.lang.LinkageError: Method void Second.foo() overrides final method in class First
. Это правильное поведение компилятора? Я предполагал, что в этом случае будут некоторые подтверждения. Спасибо!