Enums 在Kotlin中不带类直接引用枚举实例

Enums 在Kotlin中不带类直接引用枚举实例,enums,kotlin,Enums,Kotlin,在Kotlin中,当E与使用其实例的代码位于同一文件中时,我无法直接引用枚举实例: enum class E { A, B } 我想做的是: val e = A 我能做的是: val e = E.A 这是可能的吗?是的,这是可能的! 在Kotlin中,enum实例可以像大多数其他东西一样导入,因此假设默认包中有enum类E,您只需将import E.*添加到希望直接使用其实例的源文件顶部即可。例如: import E.* val a = A // now translate

在Kotlin中,当E与使用其实例的代码位于同一文件中时,我无法直接引用枚举实例:

enum class E {
    A, B
}
我想做的是:

val e = A    
我能做的是:

val e = E.A
这是可能的吗?

是的,这是可能的! 在Kotlin中,enum实例可以像大多数其他东西一样导入,因此假设默认包中有enum类E,您只需将
import E.*
添加到希望直接使用其实例的源文件顶部即可。例如:

import E.*
val a = A // now translates to E.A
每个实例也可以单独导入,而不仅仅是导入枚举中的所有内容:

import E.A
import E.B
//etc...
即使在同一文件中声明了枚举,此操作也有效:

import E.*
enum class E{A,B}
val a = A

有趣的。。。所以我遇到的问题一定是因为枚举与我要使用它的位置在同一个文件中。我将更新问题以包含此限制。当我尝试相同的文件片段时,编译器会抱怨。上面写着
未解析的引用:E
。对我来说,这段代码是有效的。您可以在这里的联机编译器中尝试:-也许您的枚举没有声明在默认包的顶层?例如,如果在包p的C类中声明了枚举E,则需要
导入p.C.E.*
(即使对于相同的文件导入),您是对的-我的导入不正确。现在它工作了!非常感谢。观察-在
.kts
文件中,您甚至不需要导入。仅在常规
.kt
文件中。允许Intellij代码完成来指导导入的构造允许我正确地“找到”枚举。