Ответ 1
Эта функция, похоже, не реализована никоим образом.
@AndreyBreslav прокомментировал аналогичный вопрос:
Вы не можете переопределить Java-методы с помощью свойств Kotlin на данный момент. Было бы неплохо, если бы мы могли его поддержать, но мы не знаем, как это сделать для смешанных иерархий
Это не решает вашу проблему, но, по крайней мере, делает компиляцию кода: вы можете изменить JVM-имя получателя с @JvmName
аннотации @JvmName
:
interface A {
fun getFoo(): SomeType
}
class B: A {
override fun getFoo() = foo
val foo: SomeType = someValue()
@JvmName("getFoo_") get() = field
}
Также рассмотрите переход к более идиоматическому подходу: определите val
-property в своем интерфейсе, чтобы вы могли переопределить его в реализациях:
interface A {
val foo: SomeType
}
class B : A {
override val foo: SomeType = someValue()
}
class C : A {
override val foo: SomeType
get() = someCustomGetter()
}