1

如果我尝试输入:

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()可用的?

4

1 回答 1

4

这是为所有实例fun EGraphicsAPIConvention.of(i: Int)添加扩展方法EGraphicsAPIConvention,以便您可以编写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)

于 2016-10-28T09:17:05.080 回答