Los identificadores de reclamos de especificaciones del lenguaje Kotlin distinguen entre mayúsculas y minúsculas, pero lo siguiente genera mensajes de error del compilador debido a captadores/establecedores generados que aparentemente no distinguen entre mayúsculas y minúsculas.
var a=10; var A=20 Clash.kt:1:1: error: platform declaration clash: The following declarations have the same JVM signature (getA()I): fun <get-A>(): Int defined in root package fun <get-a>(): Int defined in root package var a=10 ^Entiendo lo que está sucediendo, pero ¿parece que este es el comportamiento correcto? ¿Hay alguna forma de evitar esto?
Esto tiene que ver con cómo el compilador crea getters y setters para que coincidan con el estándar Java Beans. En este caso, tanto los getters como los setters se denominan getA() y setA(...) porque intenta utilizar la versión inicial en mayúsculas del campo. Sin embargo, si estos campos se llamaran aa y AA , tendrías getAa() y getAA() y no tendrías una colisión de nombres.
Una solución alternativa es usar @JvmField en una o ambas propiedades. Esto evita que se generen métodos getter y setter de Java, por lo que no hay que preocuparse por las firmas de métodos en conflicto.