Kotlin 变量名:区分大小写?

hip*_*cer 4 case-sensitive kotlin

Kotlin 语言规范声明标识符区分大小写,但由于生成的 getter/setter 显然不区分大小写,因此以下内容会产生编译器错误消息。

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
^
Run Code Online (Sandbox Code Playgroud)

我明白发生了什么,但这看起来是正确的行为吗?有没有解决的办法?

Tod*_*odd 6

这与编译器如何创建 getter 和 setter 以匹配 Java Beans 标准有关。在本例中,getter 和 setter 都被命名为getA()and ,setA(...)因为它尝试使用字段的初始大写版本。但是,如果这些字段被命名为aaand AA,那么您将拥有getAa()和getAA(),并且不会发生名称冲突。