Проблема компилятора Kotlin с переопределением финальной функции Java в Kotlin - PullRequest
0 голосов
/ 07 ноября 2019

Я имею дело со следующей проблемой с Kotlin / Java Compiler. Представьте себе следующий сценарий: пусть First будет Java-классом с конечной функцией, а Second будет классом Kotlin, расширяющим First с функцией с таким же именем, как у конечной функции в First классе, то есть:

// Java class
class Firs {
    final void foo() { }
}
// Kotlin class
class Second: First() {
    fun foo() { }
}

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

...