枚举数的扩展函数,`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)