2017-07-30 46 views
3

在科特林,我无法引用枚举的情况下,直接当E是在同一文件中,我使用它的实例代码:参考枚举实例,而类科特林

enum class E { 
    A, B 
} 

什么我想做的事:

val e = A  

我能做些什么:

val e = E.A 

这可能吗?

回答

4

是的,这是可能的!

在Kotlin中,枚举实例可以像大多数其他东西一样导入,因此假设枚举类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 
+1

有趣......因此,我遇到的问题必须是因为枚举与我想要使用它的*相同*文件中。我会更新问题以包含此限制。 –

+0

编译器在我尝试使用同一个文件片段时抱怨。它说'未解决的参考:E'。 –

+0

对我来说,这段代码是有效的。你可以在这里在线编译器试试它:https://try.kotlinlang.org - 你的枚举可能没有在默认包的顶层声明?例如,如果枚举E在包p的C类中声明,则需要'import p.C.E. *'(即使对于同一文件导入) –