Проблема компилятора 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. Это правильное поведение компилятора? Я предполагал, что в этом случае будут некоторые подтверждения. Спасибо!

0 ответов

Другие вопросы по тегам