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