Interoperabilidad de Java: aplique @JvmName a los buscadores de properties en la class de interfaz o abstracta

Por lo general, podemos escribir el siguiente código en kotlin:

val hasValue : Boolean @JvmName("hasValue") get() = true 

Esto generará el método hasValue() lugar de getHasValue() para la interoperabilidad de Java .

Sin embargo, en una interfaz, esto me da un error de compilation:

 val hasValue : Boolean @JvmName("hasValue") get 

Lo mismo vale para la siguiente statement en una class abstracta:

 abstract val hasValue : Boolean @JvmName("hasValue") get 

Así que aquí está mi pregunta: ¿Cómo puedo decirle al comstackdor de kotlin que use hasValue() lugar de getHasValue() para getters (y setters) de properties en las interfaces de kotlin?

Creo que Kotlin tiene alguna restricción sobre el uso de @JvmName en la propiedad / function de open / override . Prohibir el uso de @JvmName en la function open / override puede evitar tener diferentes jvmName en la interfaz / superclass y subclass.

En el siguiente ejemplo, estoy tratando de anotar el getter propiedad anulada con un jvmName ( hasValueImpl ) que es diferente de la interfaz ( hasValue ) y da error de compilation:

La anotación '@JvmName' no es aplicable a esta statement

 interface Abstract { @get:JvmName("hasValue") //Compile error val hasValue: Boolean get() = false } open class Impl : Abstract { @get:JvmName("hasValueImpl") //Compile error final override val hasValue: Boolean get() = false @get:JvmName("hasValue2") //Compile error if hasValue2 is open val hasValue2: Boolean get() = false } 
  • Android Studio 3 beta 2 ClassNotFound en testings de unidad kotlin
  • Método de arranque estático de la actividad android en Kotlin
  • ¿Cómo combinar dos sets de enumeraciones en kotlin con la misma interfaz padre?
  • Kotlin: ¿puedes explicar las funciones de extensión de miembros?
  • Diferencia entre ByteArray y Array <Byte> en kotlin
  • Llamar a la function en línea de Kotlin desde Java
  • ¿Se puede asignar / networkingucir una cadena en un int?
  • Kotlin: ¿suprimir propiedad no utilizada?
  • Bt Socket cerró la exception
  • Configuración de alto y ancho de una vista Anko para match_parent
  • Codificación de request del cartero