EGraphicsAPIConvention

EGraphicsAPIConvention

如果我尝试键入:

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)正在将an extension method添加到所有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)

10-07 22:49