首页 > 解决方案 > 枚举中冲突的“名称”声明

问题描述

我有一个简单的枚举类,我想在其中有一个名为name的字段。

enum class DeviceFieldQuery(val clazz: Class<*>) {
    id(Int::class.java),
    name(String::class.java),
}

不幸的是,这似乎在 Kotlin 中不起作用。编译失败并显示以下消息:

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

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

标签: enumskotlin

解决方案


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

enum class DeviceFieldQuery(val clazz: Class<*>) {
    Id(Int::class.java),
    Name(String::class.java),
}

推荐阅读