La function de la interfaz choca con el getter de Property

El nombre de la function de una interfaz entra en conflicto con el nombre getter de una propiedad intencionalmente, pero está prohibido por el comstackdor debido a un problema de anulación accidental. ¿Es posible indicarle al comstackdor que esto es intencional?

interface A { fun getFoo() } class B: A { val foo } 

Esta característica parece no implementarse de ninguna manera.

@ Comentario de Andrey Breslav sobre una pregunta similar :

No puede anular los methods de Java con las properties de Kotlin en este momento. Sería bueno si pudiéramos apoyarlo, pero no sabemos cómo hacerlo de manera consistente para jerarquías mixtas


Esto no resuelve su problema, pero al less hace que el código se compile: puede cambiar el nombre JVM del getter con la anotación @JvmName :

 interface A { fun getFoo(): SomeType } class B: A { override fun getFoo() = foo val foo: SomeType = someValue() @JvmName("getFoo_") get() = field } 

Además, considere cambiar a un enfoque más idiomático: defina val property en su interfaz, para que pueda anularlo en las implementaciones:

 interface A { val foo: SomeType } class B : A { override val foo: SomeType = someValue() } class C : A { override val foo: SomeType get() = someCustomGetter() } 
  • El tipo de propiedad no es un tipo de excedente
  • Manejo de la plantilla de FreeMaker con Ktor Kotlin
  • Mockito se burla de comportarse como espías: Kotlin
  • no se pudo crear una instancia de extensión de complemento gradle
  • ¿Cómo puede un GpioCallback registrar "falso" dos veces seguidas?
  • Convierta ejecutable indefinidamente Runnable de Java a Kotlin
  • Sobrecarga de constructor con Kotlin
  • montón de errores usando Kotlin en el estudio de Android
  • Android Retrofit Get Query codificado
  • IntArray vs Array <Int> en Kotlin
  • ¿Por qué no puede procesar daga estos kotlin generics?