枚举数的扩展函数,`values()`不可用?

如果我尝试键入:

enum class EGraphicsAPIConvention(@get:JvmName("i") val i: Int) { API_DirectX(0), API_OpenGL(1) } fun EGraphicsAPIConvention.of(i: Int) = values().first { it.i == i } 

编译器抱怨:

未解决的参考值

this.values()也没有帮助

为什么我没有values()可用?

fun EGraphicsAPIConvention.of(i: Int)为所有EGraphicsAPIConvention实例添加扩展方法 ,以便您可以编写EGraphicsAPIConvention. API_DirectX.of(1) EGraphicsAPIConvention. API_DirectX.of(1)

Kotlin目前不提供在课堂级别编写扩展功能的方法。

但是,您可以使用companion object来获取所需的行为,如下所示:

 enum class EGraphicsAPIConvention(@get:JvmName("i") val i: Int) { API_DirectX(0), API_OpenGL(1); companion object { fun of(i: Int) = values().first { it.i == i } } } 

然后使用它: EGraphicsAPIConvention.of(0)