Enums 冲突';名称';枚举中的声明

Enums 冲突';名称';枚举中的声明,enums,kotlin,Enums,Kotlin,我有一个简单的enum类,我希望在其中有一个名为name的字段 enum class DeviceFieldQuery(val clazz: Class<*>) { id(Int::class.java), name(String::class.java), } enum类设备字段查询(val clazz:class){ id(Int::class.java), 名称(字符串::class.java), } 不幸的是,这在科特林似乎不起作用。编译失败,并显示以下消

我有一个简单的enum类,我希望在其中有一个名为name的字段

enum class DeviceFieldQuery(val clazz: Class<*>) {
    id(Int::class.java),
    name(String::class.java),
}
enum类设备字段查询(val clazz:class){
id(Int::class.java),
名称(字符串::class.java),
}
不幸的是,这在科特林似乎不起作用。编译失败,并显示以下消息:

错误:(9,5)Kotlin:声明冲突:枚举项名称,公共最终值名称:字符串


与Java代码相同的枚举类工作正常。我如何在Kotlin中解决这个问题?

Kotlin中的枚举已经定义了
名称
属性(如Java)。这与名为
name
的枚举冲突。要修复它,您可以将其大写,这更为惯用:

enum class DeviceFieldQuery(val clazz: Class<*>) {
    Id(Int::class.java),
    Name(String::class.java),
}
enum类设备字段查询(val clazz:class){
Id(Int::class.java),
名称(字符串::class.java),
}

谢谢,但我现在不想使用大写。要求字段声明为小写。您不能将其称为
name
,因为它已经与枚举上的属性冲突,您必须将其更改为其他属性,无论是大写还是拼写不同。正如我前面提到的,我必须将其命名为
name
。如果这是不可能的,那么我应该认为这是一个限制语言在这一点上:(这就是我要告诉你的,是的。使用大写的枚举也更惯用。祝你的项目好运。如果编译器不强制使用,惯用就是另一条可能会被打破的规则。在任何情况下,有很多java枚举都有这个条目。kotlin声称这样一个普通的枚举有点特别,这有点不幸。我今天在迁移一些代码时遇到了两个问题。出于好奇,为什么名称在枚举下是一个单独的条目,而不是值的属性,就像在Java端一样?